@kirill-93

Как правильно идентифицировать пользователя?

При вводе логина и пароля, я создаю запись в таблице tokens, которая состоит из полей user_id и token.
Токен - сгенерированная строка из случайных символов. Ее я возвращаю пользователю, который сохраняет ее в localStorage и добавляет в заголовки, когда делает обращения к бэкэнду.
Токен этот бессрочный. То есть один раз авторизовавшись, этим токеном можно пользоваться сколько угодно. Кроме того, есть возможность быть одновременно авторизованным на разных устройствах/в разных браузерах. Просто при каждой новой авторизации создается новый токен, а старые продолжают работать.
Подскажите, как не создавать новый токен, если пользователь входит с того же утройства, что и раньше? Или лучше старые токены делать недействительными, если по ним никто не входил некоторое время?
  • Вопрос задан
  • 49 просмотров
Пригласить эксперта
Ответы на вопрос 2
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Про токены вам стоит почитать по JWT, OAuth2, OpenId. Про пользователей - стандартная рекомендация использовать Social login. Для всех случаев использовать такие инструменты как Keycloak, Auth0 и подобные
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Токен - это фактически подпись данных авторизации клиента на стороне сервера.

А именно, это то, что объединяет в себе следующие параметры в виде ЕДИНОЙ хеш-суммы (токена):
1. ID устройства
2. ID пользователя (+данные аутентификации: пароль или другое)
3. Время входа
4. Случайную строку символов
5. Время жизни токена

Если клиент повторно авторизуется (передаются серверу п.1 и п.2) - автоматом меняются параметры 3 и 4.
А значит старый токен (хеш) становится недействительным при ЛЮБОЙ! попытке авторизации: успешно или ошибочно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы