【发布时间】:2020-08-18 11:15:15
【问题描述】:
我想使用 Node JS 和 firebase 创建一个密码重置机制。用户的配置文件存储在 firebase auth 中。
我的目标:来自 GUI,用户请求密码重置电子邮件。用户在 1 小时内最多可以请求重置密码 3 次。如果还是这样,他没有收到重置邮件,那么他可以在 1 小时后再次请求。
我考虑了几个选项来做到这一点,但不确定哪一个更能提高性能和安全性。从我的角度来看,我需要存储两个值:请求编号和请求时间。我想到了以下方法:
- 在 Firestore 中创建一个文档来维护这两个值。
- 使用 firebase auth 用户的 customClaims 来维护这两个值。
- 使用客户端 cookie 请求数字并使用 customClaims 存储请求时间。
我认为使用第一个和第二个选项会导致几个 firebase 操作。这最终向我收取了不必要的更多读/写操作成本。第三个选项会造成漏洞。
您能否建议一个更好的选项,或者我应该从上面选择哪个选项来实施重置密码机制,从而避免同一用户周期性地多次请求?
谢谢。
【问题讨论】:
标签: node.js firebase google-cloud-firestore firebase-authentication change-password