更改密码后Django PasswordChangeDoneView注销

时间:2019-02-15 13:42:54

标签: python django passwords account

我正在使用Django提供的PasswordChangeView中的PasswordChangeDoneViewdjango.contrib.auth。成功重置密码后,我希望会话无效并注销用户。 Django docs提到update_session_auth_hash()是这样做的,因此用户在更改密码后不会注销。我该如何改写并使其生效,以便用户在更改密码后确实注销?

1 个答案:

答案 0 :(得分:0)

尝试覆盖form_valid()子类中的PaswordChangeView函数。

以下是原始PaswordChangeView source code中的函数:

def form_valid(self, form):
    form.save()
    # Updating the password logs out all other sessions for the user
    # except the current one.
    update_session_auth_hash(self.request, form.user)
    return super().form_valid(form)

您可以在其中看到对update_session_auth_hash()的呼叫。而是将其删除并将以下内容放在您的子类中:

from django.contrib.auth import logout

def form_valid(self, form):
    form.save()
    self.request.session.flush()
    logout(self.request)
    return super().form_valid(form)

然后将调用该函数。