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:
...