Flask 重新设置登录密码

Flask 重新设置登录密码,flask,flask-sqlalchemy,flask-login,Flask,Flask Sqlalchemy,Flask Login,我正在使用flask登录库,但我还没有找到任何关于如何允许用户通过电子邮件重置密码的好教程或文档。如何做到这一点,我可以从哪些方向/资源着手?彻底的谷歌搜索没有发现任何有用的东西。基本逻辑: 使用电子邮件字段创建重置密码表单 当用户提交表单时,您应该: 在数据库中检查此电子邮件 生成无差别加密随机密钥(下一个仅为密钥) 将此密钥、当前时间戳和用户标识符存储到缓存或数据库 发送给用户电子邮件或短信 当用户应用密钥(例如url或特殊表单)时,您应该: 验证它(存在、未过期、以前未使用) 获取用户标

我正在使用
flask登录
库,但我还没有找到任何关于如何允许用户通过电子邮件重置密码的好教程或文档。如何做到这一点,我可以从哪些方向/资源着手?彻底的谷歌搜索没有发现任何有用的东西。

基本逻辑:

  • 使用
    电子邮件
    字段创建重置密码表单
  • 当用户提交表单时,您应该:
  • 在数据库中检查此电子邮件
  • 生成无差别加密随机密钥(下一个仅为密钥)
  • 将此密钥、当前时间戳和用户标识符存储到缓存或数据库
  • 发送给用户电子邮件或短信
  • 当用户应用密钥(例如url或特殊表单)时,您应该:
  • 验证它(存在、未过期、以前未使用)
  • 获取用户标识符
  • 删除或标记为已使用的当前密钥
  • 提供输入/生成新密码的逻辑
  • 输入/生成密码的逻辑可以不同:

  • 登录用户并显示表单以输入新密码-一次性登录密钥
  • 显示表单以输入密码,而不是登录(如果有效)
  • 生成新密码并将其发送到用户电子邮件
  • 为表单生成新密钥以输入新密码并将其发送到用户电子邮件
  • 生成新的密钥以批准表单,通过sms发送,显示表单以输入新密码和批准密钥,然后登录(如果有效)

  • flask登录
    不负责重置密码电子邮件和其他类似的事情。它只是用来管理会话和cookie

    您应该使用它来为flask添加密码重置功能和其他常见的安全相关功能。Flask Security使用Flask登录来处理会话,但在顶部添加了其他功能来完善安全功能:

    电子邮件确认

    如果需要,您可以要求新用户确认其电子邮件地址。 Flask Security将向任何具有 确认链接。导航到确认链接后,用户 将自动登录。还有一个用于重新发送邮件的视图 如果用户碰巧尝试使用,则指向给定电子邮件的确认链接 已过期的令牌或已丢失以前的电子邮件。确认链接 可以配置为在指定的时间后过期

    密码重置/恢复

    当用户忘记密码时,可以进行密码重置和恢复 或者她的密码。Flask Security向用户发送带有链接的电子邮件 他们可以重置密码的视图。一旦输入密码 重置他们将自动登录并可以使用新密码 从那时起。密码重置链接可以配置为在 指定的时间量

    用户注册

    Flask Security附带了一个基本的用户注册视图。 此视图非常简单,新用户只需提供一封电子邮件 地址和密码。如果您的 注册过程需要更多字段


    Flask登录
    仅为Flask提供用户会话管理。它处理登录、注销和长时间记住用户会话的常见任务。但不重置密码、更改密码、电子邮件确认等

    Flask security
    是实现这些目标的最佳且简单的选择。它几乎可以处理一切。但它并没有得到积极的维护

    注 该项目不再维护。考虑一下 作为替代方案的项目。-从…起 Github回购

    因此,我推荐改进版本并积极维护的库。它还具有更多的功能,如2faauth、统一登录等

    您可以使用pip安装它

     pip install flask-security-too flask-sqlalchemy
    
    并导入库,如

    从flask security导入当前用户,需要登录
    
    中提供了一些完整(但简单)的示例


    文档:

    回答得很好。使用Flask安全性使生活变得更轻松,因为我不必从头开始写任何东西,但这种方法确实很有用。这是一个很好的答案,通常缺乏文档来学习从头开始做这类事情