Я работал над проектом, который требовал от пользователя подтверждения своего электронного адреса для активации своей регистрации. Процесс генерации ключей был таким:
Создание ключа
- Создать столбец
verification_key
в users
таблице, содержащей уникальный ключ проверки для пользователя.
- Используйте SHA256 хеш вашего уникального имени пользователя (в данном случае email-id) с солью в качестве пароля.
- Преобразовать хэш в base64 и сохранить в
verification_key
этого пользователя. Это будет уникально (для практических целей я не буду вдаваться в вероятность столкновения).
итак, нижняя строка, key = Base64(Hash256(uniqueUserName+"."+password))
......
примечание : Кстати, ничто не ограничивает вас в использовании пароля в качестве соли. Вы можете просто создать произвольную строку на лету как соль.
Проверка
- Поскольку мы знаем, что
verification_key
уникален, получите key
из параметра запроса и найдите соответствующую строку.
- Если найдено, установите
verification_key
как null
(это также уменьшит вероятность столкновения, если таковое имеется) и приведет пользователя на «успешно проверенную страницу».
- Если файл не найден, перейдите на страницу "уже активирован / ключ-не найден / страница 401".