[PYTHON] Si vous modifiez votre mot de passe dans Django, vous serez déconnecté sans autorisation

C'est l'histoire de Django == 2.2.12. Après avoir changé le mot de passe de l'utilisateur à partir de l'écran personnalisé lors de la connexion

・ Lorsque j'essaye de passer à une autre page, je passe d'abord à l'écran de connexion. -Une requête à un serveur qui n'a normalement aucun problème renvoie une erreur

Vous vous posez des questions sur la situation!

En fait, si vous utilisez un écran de changement de mot de passe personnalisé, vous serez obligé de vous déconnecter après avoir changé le mot de passe. La cause en est que la session que vous utilisiez n'est plus utilisée.

Si vous utilisez quelque chose comme PasswordChangeView fourni par Django, il créera automatiquement une nouvelle session après avoir changé votre mot de passe, vous continuerez donc à être connecté.

Je veux faire cela sur l'écran personnalisé! Dans ce cas, utilisez la fonction ʻupdate_session_auth_hash () `.

Tels que le document https://docs.djangoproject.com/en/3.0/topics/auth/default/#session-invalidation-on-password-change A été écrit en ...

En passant, je publierai également les exemples d'utilisation décrits dans ce document.

from django.contrib.auth import update_session_auth_hash

def password_change(request):
    if request.method == 'POST':
        form = PasswordChangeForm(user=request.user, data=request.POST)
        if form.is_valid():
            form.save()
            update_session_auth_hash(request, form.user)
    else:
        ...

Recommended Posts

Si vous modifiez votre mot de passe dans Django, vous serez déconnecté sans autorisation
Lorsque vous oubliez le nom d'utilisateur et le mot de passe de l'écran de gestion dans Django
Si vous écrivez View decorator dans urls.py dans Django, la liste sera plus élevée.