通过电子邮件链接恢复密码的数据库表

时间:2014-06-25 20:45:59

标签: sql database login password-recovery

我正在开发一个身份验证系统。 它有两个表

UserRegistration //用于暂时存储用户信息,直到用户验证电子邮件

ID 
-UserRegistrationID
-FirstName
-LastName
-emailId
-password
-dateTime
-activationCode

AuthenticatedUsers //系统用户

-AuthUserID
-FirstName
-LastName
-emailId
-password
-dateTime

Noe我必须提供通过电子邮件恢复密码的选项。我必须向用户发送恢复链接。

将恢复链接代码存储在数据库中的位置?我应该为恢复代码创建一个单独的表: RecoveryCode

-recoveryID //PK
-AuthUserID //FK
-recoveryCode
-dateTime     //as the link is valid only for 24 hours.

请提供您的反馈和建议。 谢谢!

1 个答案:

答案 0 :(得分:1)

在我的应用程序中,recoverycode存储在其他用户信息中。

它只是一个只有一次有效的标记。如果用户单击恢复链接,则可以更改其密码。每次更改密码时都会重置恢复令牌(经过身份验证的用户仍需要当前密码)。

最重要,恢复令牌应存储,如密码,这意味着,使用强哈希方法。创建的令牌(我使用UUID4)被发送给用户(作为链接的一部分)并存储在数据库中。

链接需要令牌和用户独有的东西(我发现用户ID完全没问题)。一个用户不需要多个恢复链接。因此,只需将您拥有的一个令牌与其他用户数据保存在一起。

来源和进一步的想法:palco.readthedocs.org