Я работаю над сайтом, который реализует аутентификацию пользователей (используя Comeonin и Guardian).
Я занимаюсь проверкой электронной почты. Я подумал, что могу воспользоваться функциями Guardian для генерации URL-адреса с помощью токена JWT. Согласно этому сообщению, это похоже на правдоподобное решение (при условии, что URL-адрес использует https, а срок действия токена истекает через относительно короткий период времени).
Вот код, который я написал до сих пор:
def email_verification( user = %User{} ) do
if ( user.email != nil ) do
claims = Guardian.Claims.app_claims
|> Map.put("email", user.email)
|> Guardian.Claims.ttl({1, :hours})
{ :ok, jwt, full_claims } = Guardian.encode_and_sign(user, :email_verification, claims)
Zoinks.Mailer.send_verification_email( user.email, jwt )
end
end
Я указал адрес электронной почты в качестве претензии. Идея заключалась в том, что я мог сопоставить утверждение "электронной почты" с адресом электронной почты в базе данных, как только пользователь щелкнет ссылку.
Однако я предполагаю, что это плохая идея, тем более что ссылка будет отображаться в виде открытого текста по электронной почте.
Следуя схеме, описанной в этом сообщении SO, возможно, я мог бы генерировать случайное число, хешировать его (используя Comeonin), хранить его против пользователя и вместо этого помещать его в качестве моего утверждения? Это хорошая идея, или я совсем сбился с пути?
Предполагая, что эта часть решения работает, можно ли установить тип полезной нагрузки :email_verification
?
However, I'm assuming that this is a bad idea - especially since the link will be exposed as clear text via email.
? Если вы используете надежный секрет, не должно быть проблем с использованием вашего подхода AFAIK - person Jonas Dellinger   schedule 13.09.2016