我正在使用Django提供的来自PasswordChangeView
的PasswordChangeDoneView
和django.contrib.auth
。密码重置成功后,我希望会话失效并将用户注销。 Django docs提到update_session_auth_hash()
使用它以便用户在更改密码后不会被注销。如何覆盖它并使其在更改密码后让用户注销?
尝试覆盖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)
那将不会调用该函数。