Доброго времени суток!
Логика авторизации:
- в куке хранятся токены в формате selector:validator
- в БД: selector, хэш validator и время жизни авторизации
При успешной авторизации: создается кука с токенами и запись в БД, а также сессия с id пользователя.
При входе на закрытые разделы:
- есть сессия - пускаем
- нет сессии - проверяем данные в куке и БД, если ок - создаем сессию с id пользователя и пускаем.
Как в данном случае поступить при следующих ситуациях:
1. Смена пароля
Если сменился пароль, можно почистить БД и создать новую куку, но как быть с сессиями, которые хранятся на других устройствах? Понятно, что сессия умрет, но до этого момента доступ еще будет.
2. Кнопка "Выйти на других устройствах". Опять же, можно почистить БД и создать новую куку и снова вопрос о сессиях на других устройствах.
Есть мысль убрать проверку на наличии сессии в закрытых разделах и каждый раз делать запрос в БД на получение актуальных токенов, но на проект большие надежды)) вдруг будет большое количество активных пользователей, и каждый переход в личном кабинете - запрос не только за информацией, а также и запрос для проверки авторизации.
Пожалуйста, подскажите, как можно поступить в данной ситуации?
Если возможно, без JWT, так как на старте проекта не понятул по знаниям, да и сейчас не очень уверен, что смогу переделать.
Заранее спасибо!