2015-08-19 24 views
0

В моем проекте мне нужно отправить письмо в адрес электронной почты пользователя с ссылкой на подтверждение. Мое решение:Как вы создаете ссылку для подтверждения по электронной почте?

  1. Добавить строку столбец «Код» и логический столбец «is_active» (со значением по умолчанию ложь) в таблице пользователей.
  2. Когда пользователь регистрируется, генерирует уникальный строковый ключ и сохраняет в базе данных. Отправьте ссылку по электронной почте, например host.com/user/email/{code}/confirm
  3. Затем найдите по коду (сгенерированное строковое значение) пользователь и установите флаг «is_active» - true.
  4. Очистить значение столбца «код».

Как вы создаете ссылку на подтверждение по электронной почте?

ответ

4

Я использую подобную практику, со следующими отличиями:

  1. я хотел бы сделать URL, то есть host.com/user/email/{code}/confirm безопасный, так что пользователь должен войти в систему, чтобы проверить себя. Это обеспечивает немного большую безопасность. Например, если пользователь набрал неверный идентификатор электронной почты во время регистрации, этот неверный человек не сможет проверить даже после получения почты.
  2. Вместо поиска по code, я, таким образом, получаю пользователя id (идентификатор текущего пользователя).
  3. Для кода я использую UUID.randomUUID().toString().

Кроме того, это зависит от личного выбора, но я не использую флаг is_active. Вместо этого у меня есть набор roles, в который я помещаю роль «НЕОБХОДИМО». Это помогает мне легче заполнять полномочия пользователя при использовании Spring Security. Другой способ - просто проверить, code - null или нет.

0
  1. Не оставляйте «{code}» как 1/0 или любое предсказуемое значение. пусть это будет случайным (уникальный номер/ключ, сгенерированный для этого пользователя)

  2. Когда пользователь подтверждает по ссылке, не просто смотрите в db, как где code =. Подтвердите ключ, чтобы такая возможная инъекция была возможна или нет. Или простыми словами, если логика кода является числовой, тогда код приема должен быть подтвержден как номер

  3. Для большей безопасности вы также можете установить срок действия для подтверждения. Если пользователь не подтвердил в этот период, то URL-адрес недействителен.

Смежные вопросы