c# - 如何在asp.net web api中制作小密码重置令牌?
问题描述
我使用默认的 GeneratePasswordResetToken 方法在用户的电子邮件中发送密码重置令牌,但它非常大,有 200 到 300 个字符长。我想制作更小的令牌,如 5/6 位长,并在 3 分钟内过期。我怎样才能做到这一点?
解决方案
一种方法是这样的:
在您的数据库中有一个表,您可以在其中保存重置令牌及其创建日期时间。
当用户请求重置时,生成一个 GUID 并将其保存在该表中,然后向用户发送一封电子邮件,其中包含已包含令牌的重置链接。
当用户单击链接时,您检查令牌是否尚未过期,如果尚未过期,则允许他们更改密码。
更改密码后,要么将令牌标记为已使用,要么将其从表中删除。
GUID 非常适合这种功能,它们足够独特且无法猜测。
不要使用任何连续的或简短的(5、6 个字符),因为它们很容易猜到/蛮力。
推荐阅读
- lua - (Lua) '=' 预期在 'outer' 附近 | 尝试执行 Lua 脚本
- python - Git pre-commit 获取所有 Python 文件
- r - DT SearchPanes 自定义过滤器
- angular - Angular npm start 它正在生成浏览器应用程序包,尽管该应用程序未投入生产
- coldfusion - 查询的查询返回我完整的回报而不是过滤的回报
- docusignapi - DocuSign - 如何处理系统停机
- flutter - Flutte Floor:即使使用了@TypeConverters 注解,也没有定义类型转换
- python - 提取日期并删除不需要的字符
- powerapps - 有没有办法让 PowerApps 中的图标具有类似于 HTML 中的悬停属性?
- php - Laravel: php artisan migrate:fresh failed ``database.themes`` 不存在