首页 > 解决方案 > 如何在asp.net web api中制作小密码重置令牌?

问题描述

我使用默认的 GeneratePasswordResetToken 方法在用户的电子邮件中发送密码重置令牌,但它非常大,有 200 到 300 个字符长。我想制作更小的令牌,如 5/6 位长,并在 3 分钟内过期。我怎样才能做到这一点?

标签: c#asp.net-web-apiasp.net-identitywebsecurity

解决方案


一种方法是这样的:

在您的数据库中有一个表,您可以在其中保存重置令牌及其创建日期时间。

当用户请求重置时,生成一个 GUID 并将其保存在该表中,然后向用户发送一封电子邮件,其中包含已包含令牌的重置链接。

当用户单击链接时,您检查令牌是否尚未过期,如果尚未过期,则允许他们更改密码。

更改密码后,要么将令牌标记为已使用,要么将其从表中删除。

GUID 非常适合这种功能,它们足够独特且无法猜测。

不要使用任何连续的或简短的(5、6 个字符),因为它们很容易猜到/蛮力。


推荐阅读