Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我使用默认的 GeneratePasswordResetToken 方法在用户的电子邮件中发送密码重置令牌,但它非常大,有 200 到 300 个字符长。我想制作更小的令牌,如 5/6 位长,并在 3 分钟内过期。我怎样才能做到这一点?
一种方法是这样的:
在您的数据库中有一个表,您可以在其中保存重置令牌及其创建日期时间。
当用户请求重置时,生成一个 GUID 并将其保存在该表中,然后向用户发送一封电子邮件,其中包含已包含令牌的重置链接。
当用户单击链接时,您检查令牌是否尚未过期,如果尚未过期,则允许他们更改密码。
更改密码后,要么将令牌标记为已使用,要么将其从表中删除。
GUID 非常适合这种功能,它们足够独特且无法猜测。
不要使用任何连续的或简短的(5、6 个字符),因为它们很容易猜到/蛮力。