Здравствуйте.
Как правильно организовать проверку токенов ? Токены будут использоваться при регистрации, смене 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} .
При переходе по ней проверяем таким же образом*/
Опять же, повторюсь, для меня проблема состоит в организации определения для какого действия тот или иной токен, если их хранить в БД.