【问题标题】:Is there a way to use Django's default password reset without sending reset link via email?有没有办法在不通过电子邮件发送重置链接的情况下使用 Django 的默认密码重置?
【发布时间】:2018-02-06 11:42:53
【问题描述】:

有没有办法使用 django 的内置密码重置功能,而无需通过电子邮件发送重置链接或没有电子邮件选项。我目前正在开发一个不需要发送电子邮件的用户数量很少的简单系统。提前致谢

【问题讨论】:

    标签: django email reset-password


    【解决方案1】:

    我不熟悉 django,但在通过密码重置为任何用户(甚至是初始管理员)获得访问权限之前,我曾开发过其他应用程序。在所有这些情况下,工作方法都是相似的——重置链接是由一些 URL 存根加上在某个数据库表中某处找到的唯一键形成的。手动组装链接并使用它效果很好,尽管一个系统使用 emailsentdate 列并且拒绝做任何事情,除非它被填充,所以如果你没有通过简单的方法获得成功,请检查类似的东西

    如果您绝对必须拥有一个电子邮件服务器,那么确实存在一些供开发人员使用的简单服务器,例如 smtpdev,它们的行为就像一个 smtp 服务器来欺骗需要它的应用程序,但它们不会将电子邮件发送到任何地方,他们只是展示它们。用于调试,但如果 django 坚持要配置一个看起来像真实邮件服务器的服务器,可能会对您有所帮助

    【讨论】:

      【解决方案2】:

      您可以使用表单更改密码,并在views.py中使用该功能

      make_password()

      if passwordForm.is_valid():
                      password = passwordForm.cleaned_data['password']
                      request.user.password = make_password(password)
                      request.user.save()
      

      [make_password][1]https://docs.djangoproject.com/en/1.11/topics/auth/passwords/

      【讨论】:

      • 谢谢,已经找到你说的解决方案。我将您的建议标记为答案。
      【解决方案3】:

      django.contrib.auth 中有一些选项可以让您更改密码而无需发送电子邮件:

      • PasswordChangeForm:一种允许用户通过输入旧密码来更改密码的表单。
      • SetPasswordForm:一种让用户无需输入旧密码即可更改设置密码的表单

      您可以在视图中实现其中之一来更改用户密码。

      【讨论】:

        猜你喜欢
        • 2020-06-03
        • 2011-02-14
        • 2011-02-08
        • 1970-01-01
        • 2011-08-01
        • 1970-01-01
        • 2013-12-18
        • 2015-07-31
        • 1970-01-01
        相关资源
        最近更新 更多