有没有办法使用Django的默认密码重置而不通过电子邮件发送重置链接?

时间:2017-08-29 06:18:50

标签: django email reset-password

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

3 个答案:

答案 0 :(得分:3)

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

  • PasswordChangeForm:允许用户输入旧密码更改密码的表单。
  • SetPasswordForm:允许用户更改设置密码而不输入旧密码的表单

您可以在视图中实施其中一个更改用户密码。

答案 1 :(得分:1)

您可以使用表单更改密码,并在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/

答案 2 :(得分:-1)

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

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