Django PasswordChangeDoneView выход из системы после смены пароля - PullRequest
0 голосов
/ 15 февраля 2019

Я использую предоставленные Django PasswordChangeView и PasswordChangeDoneView от django.contrib.auth.После успешного сброса пароля я хочу, чтобы сеанс был признан недействительным, и выйдите из системы.В Django docs упоминается, что update_session_auth_hash() делает его таким, чтобы пользователь не вышел из системы после смены пароля.Как мне переопределить это и сделать так, чтобы пользователь ВЫХОДИЛ из системы после смены пароля?

1 Ответ

0 голосов
/ 15 февраля 2019

Попробуйте переопределить функцию form_valid() в своем подклассе PaswordChangeView.

Вот функция в исходном PaswordChangeView исходном коде :

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)

Тогда не вызовет эту функцию.

...