Tan*_*a47 3 sql database authentication password-recovery
我正在开发一个身份验证系统。它有两张桌子
UserRegistration // 用于临时存储用户信息,直到用户验证电子邮件
ID
-UserRegistrationID
-FirstName
-LastName
-emailId
-password
-dateTime
-activationCode
Run Code Online (Sandbox Code Playgroud)
AuthenticatedUsers // 系统用户
-AuthUserID
-FirstName
-LastName
-emailId
-password
-dateTime
Run Code Online (Sandbox Code Playgroud)
不,我必须提供通过电子邮件恢复密码的选项。我必须向用户发送恢复链接。
恢复链接代码在数据库中的哪里存储?我应该为恢复代码创建一个单独的表: RecoveryCode
-recoveryID //PK
-AuthUserID //FK
-recoveryCode
-dateTime //as the link is valid only for 24 hours.
Run Code Online (Sandbox Code Playgroud)
请提供您的反馈和建议。谢谢!
在我的应用程序中,恢复代码存储在其他用户信息中。
它只是一个令牌,仅有效一次。如果用户点击恢复链接,他就可以更改密码。每次更改密码时都会重置恢复令牌(经过身份验证的用户仍然需要当前密码)。
但最重要的是,恢复令牌应该像密码一样存储,这意味着使用强哈希方法。创建的令牌(我使用 UUID4)被发送给用户(作为链接的一部分)并以哈希值存储在数据库中。
为此,链接需要令牌和用户特有的东西(我发现用户 ID 完全没问题)。一个用户不需要多个恢复链接。因此,只需将您拥有的一个令牌与其他用户数据一起保存即可。
来源和进一步的想法:palco.readthedocs.org。
| 归档时间: |
|
| 查看次数: |
2555 次 |
| 最近记录: |