我有一个允许用户更改密码的视图。我不想使用默认密码验证系统。当用户更改密码时,密码成功更改但用户正在注销。我看到该会话是密码更改失效。我不想在密码更改后再次登录。那么如何在密码更改后保留会话?
我的views.py文件,
from django.contrib.auth import update_session_auth_hash
def password_change(request):
if request.method == 'POST':
new_password = request.POST.get('pwd')
user=request.user
try:
u = User.objects.get(username=user)
u.set_password(new_password)
u.save()
update_session_auth_hash(request,user)
messages.add_message(request, messages.INFO, 'Password successfully changed')
return redirect("password_change")
except User.DoesNotExist:
messages.add_message(request, messages.INFO, 'User Does not exist')
else:
return render(request,"password_change.html",{})
答案 0 :(得分:1)
您应该在update_session_auth_hash中使用变量u。您正在使用" user"来自请求,仍然有旧密码。