如何在 asp.net web api 中制作小型密码重置令牌?

How to make small password reset token in asp.net web api?

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

一种方法是这样的:

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

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

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

更改密码后,将令牌标记为已使用,或者直接将其从您的 table 中删除。

GUID 非常适合此类功能,它们非常独特且无法猜测。

不要使用任何连续的或短的(5、6 个字符),因为这些很容易被猜到/暴力破解。