Lun*_*una 2 database postgresql node.js express typescript
我正在构建密码恢复。当用户请求时,我的应用程序会创建一个包含用户 ID、哈希值和到期日期的新行。
然后,用户会收到一封电子邮件,其中的 URL 包含数据库上的哈希值。当 URL 哈希值和 DB 哈希值匹配时,他可以更改密码。
删除过期密码恢复行的最佳方法是什么?我想到了3种可能性,但似乎都不对。
当请求密码恢复时,会安排一个作业在该行过期时从数据库中删除该行。(这意味着使用 Redis/Bull 来处理该工作)
在数据库上创建一个触发器,以在插入新行时删除所有过期的行。
与 3 相同,但触发器位于应用程序中。
我担心只将行保留在数据库中而不清理它是会被无用的数据污染。
删除过期数据等维护任务通常优先级较低,其设计应尽量简单。对于这种任务,具体发生的时间并不重要,因此我只需设置一个每天一次的 cron 作业来删除过期的数据(例如DELETE FROM resets WHERE expiration < NOW())。
至关重要的是,应用程序的密码重置代码必须将数据库中存储的到期日期与当前时间进行比较,而不仅仅是依赖于是否存在匹配的重置令牌。
\n安排单个作业或触发器会带来不必要的复杂性和/或性能影响。
\n| 归档时间: |
|
| 查看次数: |
1773 次 |
| 最近记录: |