在 MySQL 中存储临时令牌的架构

问题描述 投票:0回答:2

我正在我的 NextJS 应用程序中实现忘记密码功能。每当用户单击“忘记密码”时,我都会生成一个临时令牌。我是否应该将临时令牌存储在现有的用户表中,

用户表

user_id
user_name
forgotpass_token

这里只有少数人会有token,因此,大部分字段将为NULL。

或者我可以创建一个新表来存储这两个值吗:

忘记通行证表

user_id
forgotpass_token

哪种方法应该是最佳的,或者是否有更好的解决方案?

sql mysql database-design
2个回答
0
投票

第二种方法更干净。还为令牌添加过期时间戳。


0
投票

使用第二种方法,使用单独的表格。

正如另一个答案中提到的,您还需要一个“到期”日期列。但除此之外,在发生帐户接管(甚至只是尝试帐户接管)的情况下,您将希望拥有所有内容的历史记录,这意味着随着时间的推移,用户可能需要表中的许多行,并且您需要考虑其他相关数据事件的信息,例如源 IP、用户代理等。将其保留在自己的表中不仅可以使其更清晰,而且如果您发现需要记录其他内容,也可以更轻松地进行更改。

© www.soinside.com 2019 - 2024. All rights reserved.