-
21-12-2019 - |
题
我正在使用 flask-login
图书馆,而且我还没有找到任何关于如何允许用户通过电子邮件重置密码的好教程或文档。我可以看什么方向/资源如何做到这一点?彻底的谷歌搜索没有透露任何有用的东西。
解决方案
flask-login
不关心重置密码电子邮件和其他此类事物。它就在那里来管理会话和饼干。
您应该使用 Flask-Security
,它为烧瓶添加了密码重置功能和其他常见安全相关功能。 Flask-Security使用Flask-Login来处理会话,但在最新中添加其他功能以循环安全功能:
电子邮件确认
如果需要,您可以要求新用户确认其电子邮件地址。 Flask-Security将向任何新用户发送电子邮件消息 确认链接。导航到确认链接时,用户 将自动登录。还有重新发送的视图 如果用户恰好尝试使用,则确认链接到给定电子邮件 已过期的令牌或已丢失以前的电子邮件。确认链接 可以配置为在指定的时间后到期。
密码重置/恢复
密码重置和恢复可用于用户忘记他的时 或她的密码。 Flask-Security以链接向用户发送电子邮件 要查看它们可以重置密码的视图。密码是 重置它们会自动登录并可以使用新密码 从那时起。密码重置链接可以配置为之后过期 指定的时间。
用户注册
烧瓶安全性包装有基本的用户注册视图。 此视图非常简单,新用户只需提供电子邮件 地址及其密码。如果你的话,这个视图可以覆盖[SIC] 注册过程需要更多的字段。
其他提示
基本逻辑:
- 创建重置密码表单
email
场。 - 当用户提交表单,那么你应该:
- 在数据库中检查此电子邮件
- 生成未区分的加密随机密钥(下一个只是密钥)
- 将此密钥,当前时间戳和用户标识符存储到缓存或数据库
- 将其发送到用户电子邮件或短信
- 当用户应用密钥(例如使用url或特殊形式)时,您应该:
- 验证它(存在,未过期,之前未使用)
- 获取用户标识符
- 删除或标记为已使用的当前密钥
- 提供输入/生成新密码的逻辑。
输入/生成密码的逻辑可以不同:
- 登录用户并显示表单以输入新密码-一次性登录密钥
- 显示表单以输入密码而不是登录(如果有效)
- 生成新密码并发送到用户邮箱
- 为表单生成新的密钥以输入新密码并将其发送到用户电子邮件
- 生成新的密钥以批准表单,通过短信发送,显示表单以输入新密码和批准密钥,然后登录(如果有效)
不隶属于 StackOverflow