如何在play框架中生成临时URL?

时间:2014-11-12 23:11:58

标签: playframework change-password

我正在使用Play框架和Java来构建Web应用程序。我的应用程序中有一个重置密码功能。我不想生成临时密码并通过电子邮件发送给用户。相反,我想生成有效期为x天的临时URL,并通过电子邮件发送给用户,他/她可以使用它来重置他/她的密码。我不确定如何在Play Framework中实现它,或者即使它可以在Play中实现。

[更新] 我想知道如何将临时URL添加到我的应用程序路由文件中。我甚至不确定这是否正确的位置添加临时URL。如何生成链接,我相信我知道如何实现它,但是如何将它添加到我的应用程序中,我不确定我的问题是否足够清楚,对不起

1 个答案:

答案 0 :(得分:4)

简单,将存储在数据库中的两个字段添加到您的用户模型:String tokenDate 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现在不比现在少 - >显示表单,用于设置新的通行证和流程。
  • 如果发现给定令牌的用户,但为时已晚,请使用"重新定向到常用表单"提醒密码" + flash消息:Your token expired, start again,也为此用户设置tokentokenValidityDate为空。
  • 如果找不到具有给定令牌的用户,则使用&#34重定向到常用表单;提醒密码"没有任何消息。