Dies ist die Geschichte von Django == 2.2.12. Nach dem Ändern des Benutzerkennworts vom selbst erstellten Bildschirm, während Sie angemeldet sind
・ Wenn ich versuche, auf eine andere Seite zu wechseln, springe ich zuerst zum Anmeldebildschirm.
Sie haben sich über die Situation gewundert!
Wenn Sie einen benutzerdefinierten Bildschirm zum Ändern des Kennworts verwenden, müssen Sie sich nach dem Ändern des Kennworts abmelden. Die Ursache ist, dass die von Ihnen verwendete Sitzung nicht mehr verwendet wird.
Wenn Sie etwas wie "PasswordChangeView" von Django verwenden, wird nach dem Ändern Ihres Passworts automatisch eine neue Sitzung erstellt, sodass Sie weiterhin angemeldet sind.
Ich möchte das auf dem benutzerdefinierten Bildschirm tun! Verwenden Sie in diesem Fall die Funktion update_session_auth_hash ()
.
Wie das Dokument https://docs.djangoproject.com/en/3.0/topics/auth/default/#session-invalidation-on-password-change Wurde geschrieben in ...
Übrigens werde ich auch die in diesem Dokument beschriebenen Verwendungsbeispiele veröffentlichen.
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:
...