Как подтвердить электронную почту при регистрации?

Я разрабатываю веб-сайт с использованием struts2 и hibernate в качестве серверной части. На многих сайтах после регистрации на вашу электронную почту будет отправлена ​​ссылка, и после нажатия на нее регистрация будет завершена. Я хочу, чтобы эта функция была на моем веб-сайте, но я понятия не имею, как это сделать и как это работает? мне нужен пример, чтобы сделать это....


person Ashok.N    schedule 14.06.2012    source источник
comment
Это слишком широкий вопрос для SO. По сути, у вас есть форма, отправленная на ваш код на стороне сервера, вы создаете уникальный токен для регистрации, создаете запись с флагом ожидания или аналогичным в своей базе данных (включая токен), затем вы отправляете электронное письмо (возможно, через Java). Mail API), содержащий токен на адрес электронной почты. Вы показываете страницу, где они могут предоставить токен. Они переходят по ссылке или копируют и вставляют токен на страницу и отправляют его вместе со своей регистрационной информацией. Тот факт, что они предоставили токен и информацию для входа, говорит о том, что они получили электронное письмо и это они.   -  person T.J. Crowder    schedule 14.06.2012
comment
это не имеет ничего общего с struts2   -  person Ashish Gupta    schedule 14.06.2012


Ответы (4)


Я никогда не возился со стойками, но в основном вы могли бы отправить электронное письмо со ссылкой, которая ведет на определенную страницу. Когда пользователь регистрируется на вашем веб-сайте, вы можете сохранить, среди прочего, адрес электронной почты пользователя, отметку времени регистрации, а также ключ (например, хэш электронной почты и пароль).

Затем вы создаете ссылку и включаете адрес электронной почты и ключ в строку запроса. После того, как пользователь щелкнет ссылку, на вашей странице вы сделаете проверку, чтобы убедиться, что пользователь все еще находится в течение некоторого периода времени (необязательно) и что указанное электронное письмо соответствует данному ключу (который вы сохранили в базе данных).

Если электронная почта и ключ совпадают, то активируйте учетную запись.

person npinti    schedule 14.06.2012
comment
Я бы предложил использовать случайные ключи. По крайней мере, используйте секретный ингредиент (-› соль) в хэшах, иначе злоумышленник, который знает, как вы вычисляете ключи, тоже может вычислить ключи, и ему не нужно будет получать электронное письмо. Кроме того, именно так обычно выполняются проверки электронной почты. - person user1252434; 14.06.2012
comment
@ user1252434: Я согласен с вашим решением. Я просто хотел привести какой-то базовый, тривиальный пример, который мог бы заставить OP начать работу в правильном направлении. - person npinti; 14.06.2012
comment
спасибо npinti за ваше предложение. я только что завершил отправку URL на почту. но я понятия не имею, как зашифровать и расшифровать URL. ты можешь мне помочь - person Ashok.N; 16.06.2012
comment
@ Ashok.N: Вот почему вам нужно сгенерировать ключ (будь то из хешированного значения или какого-либо безопасного ключа, который рекомендуется). Ключ предоставит вам способ идентифицировать электронную почту, поскольку маловероятно, что кто-то еще, кроме вас, узнает, что такое пара ключа и электронной почты. Это устранит необходимость шифрования/дешифрования URL-адреса. - person npinti; 18.06.2012

Это широкий вопрос, но я отвечаю на основе проверки

1. Вам нужна страница регистрации с примером формы /signup.jsp
2. После основных полей и проверки электронной почты, сгенерируйте код xyzcode для этого электронного письма,
3. отправьте электронное письмо на адрес электронной почты пользователя, используя почтовый сервер, со ссылкой на страницу проверки ссылки, например /validate.jsp?code=xyzcode. (настройка почтового сервера и отправка электронной почты выходит за рамки ответа)
4. На validate.jsp проверьте code и подтвердите любое электронное письмо с помощью этого кода, в противном случае выведите соответствующее сообщение об ошибке.

person maaz    schedule 14.06.2012
comment
и лучше вы генерируете случайный токен, поэтому вам не нужно шифровать токен. - person maaz; 16.06.2012

Есть несколько подходов, но я предлагаю тот, который будет простым и стандартным.

In user table add extra column as Status [которое может принимать два значения: неактивное или активное]

create one more table(emailauthentication) where columns will be (key,emaiId)..

Теперь, что вам нужно сделать, это после того, как пользователь нажмет «Отправить» с регистрационными данными... сгенерировать динамический ключ.. может быть метка времени + адрес электронной почты (или что-то динамическое и уникальное) и создать запись в пользовательской таблице со статусом неактивным и создать запись в аутентификации по электронной почте. таблица с этим сгенерированным ключом и emaiId.. теперь, после создания записи, сгенерируйте URL-адрес, который может быть похож на

<a href="doAuthenticationForUser?authenticationId='dynamicKey'"/>Click to authenticate</a>

Теперь, когда пользователь щелкает этот URL-адрес, затем в классе действий или службе для этого идентификатора аутентификации найдите идентификатор электронной почты и сделайте статус столбца активным.

person Rajesh    schedule 14.06.2012

Это правда, что ответ на вопрос довольно большой.
Я знал одну ссылку, по которой есть лучший ответ, данный BalusC
Вот ссылка:лучший ответ.
Я реализовал в своем проекте. Я надеюсь, что эта ссылка поможет другим.
Спасибо за чтение.

person Aniket Kulkarni    schedule 12.11.2012