banderos120
@banderos120
Играю на балалайке

Как правильно организовать проверку токена?

Здравствуйте.
Как правильно организовать проверку токенов ? Токены будут использоваться при регистрации, смене email адреса пользователя, восстановлении пароля, удалении профиля, изменении статуса профиля и может еще какой функционал добавится дальше.
Мыслей несколько по этому поводу:
- Хранение в БД в таблице пользователя, в столбце "token" , когда он установлен, то есть значение, когда не установлен, то NULL
- Хранение в БД в отдельной таблице токенов (user_id, token, value, created_at) , где будут храниться все токены, у каждого токена ограничен срок действия (по крону в определенное время проходимся и удаляем устаревшие). Столбец value ввел для сохранения, например, email, при его смене.
! Проблема хранения в БД - определение к какому именно действию принадлежит токен. Т.е. что мне мешает подставить в ссылке на смену email токен от восстановления пароля. (или может это я так думаю) .
- Верификация токена без записи в БД, т.е. по принципу генерируем:
$token = md5('confirm_registration_' . $solt . $username); //$solt - произвольная hash-строка
/*делаем ссылку вида: http://mysite.dev?token={$token}&username={$username} . 
При переходе по ней проверяем таким же образом*/


Опять же, повторюсь, для меня проблема состоит в организации определения для какого действия тот или иной токен, если их хранить в БД.
  • Вопрос задан
  • 2958 просмотров
Решения вопроса 2
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
пфффффффффф!
формат: token only!
в базе в кортеже - все параметры этого токена.
да и токены опасны: время жизни 12 часов.
Ответ написан
@shoomyst
dumb
В чем проблема добавить еще одно поле с типом (для какого действия)?
На каждое действие лучше отдельный токен.
Поле value вообще ни о чем: для одних действий избыточно, для других недостаточно. Возможно есть смысл иметь общую таблицу без value + отдельные таблицы токенов под конкретные задачи, где нужны доп. поля
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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