2016-03-22 31 views
2

Warum führt der folgende Code dazu, dass mein Benutzer ausgeloggt wird, wenn er ein neues, gültiges Passwort eingibt?Django Passwort ändern

@login_required 
def change_password(request): 
    pass_form = PasswordChangeForm(user=request.user) 
    if request.method == 'POST': 
     pass_form = PasswordChangeForm(user=request.user, data=request.POST) 
     if pass_form.is_valid(): 
      pass_form.save() 
      return render(request,'coursework/profile.html', 
             {'pass_form' : pass_form, 
             'pass_msg' : 'Password Updated'}) 
    return render(request, 'coursework/new_password_form.html', 
           {'form': pass_form}) 

Antwort

3

Es ist eine Sicherheitsmaßnahme von Django umgesetzt, und es wird in der Standardkonfiguration aktiviert - sobald ein Benutzer sein Passwort ändert, werden alle vorhandenen Sitzungen für ungültig erklärt werden. Siehe https://docs.djangoproject.com/en/1.9/topics/auth/default/#session-invalidation-on-password-change

benötigen Sie die folgenden zu Ihrer Ansicht nach pass_form.save() hinzuzufügen, um die aktuelle Sitzung zu halten gilt:

update_session_auth_hash(request, pass_form.user)