Я разрабатываю веб-приложение с использованием веб-профиля Java EE 6. Я хочу отправить новому пользователю по электронной почте ссылку для активации его учетной записи. Как мне это реализовать? Я использую JSF2. Есть ли какая-либо спецификация или рекомендуемый способ сделать это?
Создание URL-адресов активации в Java EE 6
Ответы (2)
Я работал над проектом, который требовал от пользователя подтверждения своего адреса электронной почты для активации регистрации. Процесс генерации ключа был таким:
Создание ключа
- Создайте столбец
verification_key
в таблицеusers
, содержащий уникальный ключ проверки для пользователя. - Используйте Хэш SHA256 вашего уникального имени пользователя (в данном случае — идентификатора электронной почты) с солью в качестве пароля.
- Преобразуйте хэш в base64 и сохранить в
verification_key
этого пользователя. Это будет уникально (для практических целей я бы не стал вдаваться в вероятность столкновения).
Итак, итог, key = Base64(Hash256(uniqueUserName+"."+password))
......
Примечание: Кстати, ничто не ограничивает вас в использовании пароля в качестве соли. Вы можете просто создать произвольную строку на лету как соль.
Подтверждение
- Поскольку мы знаем, что
verification_key
уникален, получитеkey
из параметра запроса и найдите соответствующую строку. - Если найдено, установите
verification_key
какnull
(это также уменьшит вероятность коллизии, если таковая имеется) и перенаправит пользователя на «успешно проверенную страницу». - Если не найдено, направьте пользователя на страницу «уже активировано/ключ не найден/401».
person
Nishant
schedule
02.02.2011
Привет. Это очень полезный ответ, большое спасибо. Я хочу узнать еще одну вещь из вашей реализации. После того, как пользователь активирован, вам не нужно будет снова проверять каждый раз, когда он пытается что-то сделать, поэтому должен ли я иметь другую таблицу, скажем, pending_users, чтобы, если пользователь находится в пользовательской таблице, я мог предположить, что он активирован?
- person arg20; 02.02.2011
UUID.randomUUID()
может использоваться для генерации случайного числа
- person Christophe Roussy; 02.01.2012
URL-адрес активации создает впечатление, что программная служба обрабатывает «сервисный» запрос.
Хорошие кандидаты для реализации этой службы включают сервлеты, которые будут выполнять активацию/проверку пользователя и перенаправлять на страницу успеха JSF.
person
Ryan Fernandes
schedule
02.02.2011
Я никогда раньше не использовал сервлеты с jsf2, так как они мне никогда не были нужны. Не могли бы вы показать мне фрагмент кода, пожалуйста?
- person arg20; 02.02.2011
key
, который необходимо отправить с URL-адресом активации, или вы хотите создать URL-адрес с возможностью закладки в JSF? - person Nishant   schedule 02.02.2011