2010-04-16 40 views
0

我想在我的Java Web应用程序中实现忘记密码功能。我想实现这样的:如何在数据库记录中“更新”更改密码唯一代码?

  1. 用户输入他们的帐户的电子邮件地址,并按下“忘记密码”按钮
  2. 应用程序生成的字符和数字组成的独特代码,并发送一个链接与作为参数传递给用户的电子邮件地址
  3. 用户点击该链接,它们都带有一种形式,他们可以输入新密码

我想要做的就是确保链接(即唯一代码)“过期”的是什么小时后用户按下忘记密码按钮,以便如果攻击者可以访问他们的电子邮件帐户,则该链接将无法工作,除非他们在第一个小时内获得访问权限。

我不知道如何使数据库'过期'或清除用户帐户记录的代码。我怎么能实现这个?

回答

3

ValidUntil列添加到包含代码的表中,并在让用户更改密码之前检查该列。

+2

我发现最好存储代码的生成日期,因为a)您可以轻松更改允许的时间,而无需更新数据库中的现有数据,并且b)在测试期间,您可以通过更改模拟超时代码中所允许的时间,而不是乱用数据库中的数据。 – RedFilter 2010-04-16 15:50:05

+0

@OrbMan,我同意a),我不认为这个评论框允许我解释为什么我不认为b)适用。 – 2010-04-16 15:55:45

+0

酷,很好的简单的解决方案 - 现在感觉有点傻:) – JMM 2010-04-16 15:59:17

0

您将日期存储在数据库中生成唯一代码的日期。当用户点击链接时,如果它超过自生成唯一代码以来的允许时间,则不要让他们更改密码。