代码之家  ›  专栏  ›  技术社区  ›  Pablo Fernandez

在Django中使用另一种密码重置模型

  •  0
  • Pablo Fernandez  · 技术社区  · 6 年前

    由于我正在创建的应用程序的复杂性,我最终得到了三个用户模型。一个很正常的 User 除了admin和另外两个之外,它不用于其他任何事情。我自己编写了一组auth后端来处理它,它工作得很好。

    现在我的问题是有一个重置密码系统。在使用自定义模型时,是否有方法使用Django的reset password视图?

    1 回复  |  直到 6 年前
        1
  •  0
  •   birophilo    6 年前

    我已经回答了你的问题 related question 关于密码重置,涉及到很多类似的问题。

    django.contrib.auth.views ,在 PasswordResetConfirmView -处理重置窗体的视图-它有 get_user() 获取用户模型的方法。以及 form_valid() 方法执行用户身份验证。因此,如果您按照我的另一个答案对这个视图进行子类化,并编写这些方法的您自己的版本来处理您的非默认用户模型,那应该是正确的做法。

    我不知道您的具体情况,但如果您重新开始,最好的方法可能是设置默认用户(如 AUTHOR_USER_MODEL )到Django的一个扩展 AbstractUser ,从那里您可以使用不同的用户类型和角色自定义您的用户模型。如果你已经这样做了道歉,当然在现有的应用程序上更改用户模型是困难和危险的。但我认为有了这个设计,一个密码重置链接将覆盖所有用户。这是一个很好的 blog post 安排好那条路。