密码更改后Django PasswordChangeDoneView注销

问题描述 投票:0回答:1

我正在使用Django提供的来自PasswordChangeViewPasswordChangeDoneViewdjango.contrib.auth。密码重置成功后,我希望会话失效并将用户注销。 Django docs提到update_session_auth_hash()使用它以便用户在更改密码后不会被注销。如何覆盖它并使其在更改密码后让用户注销?

python django passwords account
1个回答
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)

那将不会调用该函数。

© www.soinside.com 2019 - 2024. All rights reserved.