首页 > 解决方案 > 用户在忘记密码过程开始时登录,让我进入?

问题描述

我正在实施“忘记密码”。我的身份验证是通过 jwt 访问令牌。(用户登录,获取访问令牌,将其与其余 api 调用一起发送)。

所以假设当前没有登录的用户,点击“忘记密码”。我为他创建了一些哈希令牌,然后给他发了一封邮件。如果他点击它,我将解码,向他显示更改密码,并创建一个新的访问令牌,就像这是主要思想,一切都很好。

我的问题是针对这种情况:用户点击忘记密码,输入他的邮件,我给他发了一封邮件,但是他没有点击 url 并重置,而是通过他的密码登录。

  1. 我应该让他登录吗?创建一个访问令牌,一切都好吗?从已发送邮件中重置令牌时(或者它仍然是重置密码的有效令牌吗?)
  2. 显示一些错误,说转到您的邮件并继续忘记密码过程?

我的问题来自安全方面,因为也许一个用户认为他的密码被泄露了,然后如果我让他进入,那么也许得到密码的人(不是用户)仍然可以登录/更改密码 - 而原始用户转到邮件并认为他处理了该过程。

我知道这可能是一种罕见的比赛条件,但我想避免它。

(另外,如果我让他进来,然后他点击已经发送的邮件中的 url,我应该重置它吗?在我的场景中,也许最好不要重置?或者如果用户点击两次“忘记密码”我应该创建 2 个不同的令牌,只接受后者吗?)

ii 真的很想得到一个建议,如何处理这种情况,都忘记了密码相关。

谢谢。

标签: authenticationjwt

解决方案


我不是专家。这只是我的看法:

“忘记密码”功能不应使旧密码无法使用,因为其他人可能会调用此过程来阻止帐户所有者登录。您可能需要相当长的时间才能意识到电子邮件,并且会引起很多头痛。

当有人在短时间内请求多封电子邮件时,它们应该都可以正常工作。通常情况下,邮件服务器会花时间,而人们并不以耐心着称,因此他们会单击两次按钮,但会使用到达收件箱的第一个链接。

这都是关于可用性的。

现在到安全​​性:当有人登录时,电子邮件也应该保持活动状态。正如你提到的,恶意行为者可能会登录,否则会阻止所有者以这种方式更改密码。


推荐阅读