我正在使用Django提供的PasswordChangeView
中的PasswordChangeDoneView
和django.contrib.auth
。成功重置密码后,我希望会话无效并注销用户。 Django docs提到update_session_auth_hash()
是这样做的,因此用户在更改密码后不会注销。我该如何改写并使其生效,以便用户在更改密码后确实注销?
答案 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)
然后将不调用该函数。