[Python][Django]パスワード変更時の挙動

やりたかったこと

ログインしている状態で、ユーザーのパスワード変更処理を実装したい

問題

パスワード変更自体は問題なくできるが、認証が切れてしまう

結論

update_session_auth_hashを使用する

def form_valid(self, form):
    user = User.objects.get(id=self.request.user.id)
    user.set_password(form.cleaned_data.get('password'))
    user.save()
    # 更新後に update_session_auth_hash メソッドを実行する
    update_session_auth_hash(self.request, user)

コメント

タイトルとURLをコピーしました