dim565
Искусственный Интеллект
(424865)
4 года назад
Сразу предупрежу, лично с токенами не работал, но ваш вопрос меня заинтересовал, поэтому поискал информацию с разных сайтов и постарался быстро вникнуть в суть.
В целом идею вы поняли правильно, можно сделать как написали, но существует стандарт JWT (JSON Web Tokens), думаю для аутентификации лучше попытаться использовать именно его или хотя бы рассмотрите этот вариант.
Кратко, что я понял: после успешной аутентификации сервер генерирует access token такого формата: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6IjEzMzciLCJ1c2VybmFtZSI6ImJpem9uZSIsImlhdCI6MTU5NDIwOTYwMCwicm9sZSI6InVzZXIifQ.ZvkYYnyM929FM4NW9_hSis7_x3_9rymsDAx9yuOcc1I
В нем зашифрован набор полей (как минимум ID пользователя, но можете добавить и другие неконфиденциальные данные). Токен можно сохранить в cookie, каждый раз сервер будет получать его, расшифровывать, проверять подпись и если все правильно получать ID.
В базе данных хранить access token не нужно, но пишут, что для дополнительной безопасности есть смысл сохранять refresh token (случайная строка) и также сохранять в браузере клиента.
В общем, скину ссылки на статьи, из которых все это узнал (может есть и более подробные), будет желание посмотрите:
cyberpolygon.com/ru/materials/security-of-json-web-tokens-jwt/
only-to-top.ru/blog/programming/2019-06-20-registraciya-i-avtorizaciya-v-php-s-jwt.html
gist.github.com/zmts/802dc9c3510d79fd40f9dc38a12bccfc (здесь для мобильного приложения, но суть одна)