考虑到我必须遵循的要求,我可以/应该采取啥方法来更改密码?

Posted

技术标签:

【中文标题】考虑到我必须遵循的要求,我可以/应该采取啥方法来更改密码?【英文标题】:What approach could/should I take to change a password bearing in mind the requirements I have to follow?考虑到我必须遵循的要求,我可以/应该采取什么方法来更改密码? 【发布时间】:2011-05-13 10:37:43 【问题描述】:

我需要在我们的 asp.net 网站上提供重置用户密码的功能。

为此,用户必须提供他们注册时使用的电子邮件地址,并且该功能应该重置他们忘记的密码,这很容易。

棘手的部分是考虑到网站的会员模型(不使用标准的 AspnetMembershipProviders),该网站使用自己的用户处理系统。

这个问题的支点是关于我已经提供的以及我必须遵循的要求,它们是:

1) User can enter email address to reset password
2) the password that is sent to the email address provided
3) the temporary password must be valid for no more than 24 hours
4) the email will provide the link to allow them to enter the temporary password
5) when they log in they must be prompted to reset to a permanent password
6) the temporary password must be single use

对于第 3 点,一位同事建议使用 SQL 作业来自动执行时间限制,但我不完全确定这将如何工作,或者它是否是最佳方法。

对于第 6 点,我正在考虑使用触发器来使用于登录的临时密码无效,这样如果他们再次尝试,他们将不得不再次完成整个过程。

3 和 6 是我想了解的部分,在解释您的答案时,您能否尝试说明为什么应该使用规定的方法来完成,以便我可以更好地判断哪个答案最适合我的要求。

【问题讨论】:

【参考方案1】:
3) the temporary password must be valid for no more than 24 hours

这就是我要做的。当该人要求重置密码时,系统生成的密码将更新到数据库表中。该表有一个LastModified 列和一个IsSystemGeneratedPassword 列,这两个列都将分别设置为当时的日期时间和true。接下来,当用户尝试登录时,如果IsSystemGeneratedPassword 为真,那么我会将 LastModified 与当前日期进行比较并找出经过的时间。如果超过限制(在您的情况下为 24 小时),则不允许登录。用户被告知他的临时密码到期并再次重定向到重置密码页面。

6) the temporary password must be single use

当用户通过上述步骤 3 登录并能够成功登录时,因为 IsSystemGeneratedPassword 为真,用户必须被重定向到更改密码页面,在该页面中他们将其更改为他们的选择之一。没有选择。当用户更改时,IsSystemGeneratedPassword 将设置为 false。

这种方法不涉及使值无效的批处理作业。

【讨论】:

谢谢 - 如此简单且无需批处理的实现方法。

以上是关于考虑到我必须遵循的要求,我可以/应该采取啥方法来更改密码?的主要内容,如果未能解决你的问题,请参考以下文章

我们啥时候应该考虑使用私有或受保护?

编写应该“永远”运行的 Java 程序时要考虑啥

api端点上的数据验证?你们采取啥方法?

为了避免在库代码中引发“FE_INEXACT”,我应该采取啥措施?

HTML在构造参数时遵循啥规则?

SynchronizationContext笔记