我正在使用Play框架和Java来构建Web应用程序。我的应用程序中有一个重置密码功能。我不想生成临时密码并通过电子邮件发送给用户。相反,我想生成有效期为x天的临时URL,并通过电子邮件发送给用户,他/她可以使用它来重置他/她的密码。我不确定如何在Play Framework中实现它,或者即使它可以在Play中实现。
[更新] 我想知道如何将临时URL添加到我的应用程序路由文件中。我甚至不确定这是否正确的位置添加临时URL。如何生成链接,我相信我知道如何实现它,但是如何将它添加到我的应用程序中,我不确定我的问题是否足够清楚,对不起
答案 0 :(得分:4)
简单,将存储在数据库中的两个字段添加到您的用户模型:String token
和Date tokenValidityDate
。
当用户请求密码更改时,将新token
设置为完全唯一的数据库,即。 123,6svv376d.foo.bar.loooong.hash
其中123
是用户的ID,逗号后的休息是使用应用程序密钥计算的随机哈希值。在tokenValidityDate
字段中添加令牌有效的最终日期,让我们说现在 + 1小时。
然后生成绝对链接,即:
http://domain.com/password-reset/123,6svv376d.foo.bar.loooong.hash
发送电子邮件。
Ater收到此类请求后,您可以:
tokenValidityDate
现在不比现在少 - >显示表单,用于设置新的通行证和流程。Your token expired, start again
,也为此用户设置token
和tokenValidityDate
为空。