Django 修改密码后session失效 用户不能继续保持登录状态问题
from django.contrib.auth import authenticate, login, logout, update_session_auth_hash
def modify_password(request):
"""
@api {post} api/modify_password/ 3. 修改密码
@apiDescription 修改密码
@apiGroup 账号功能
@apiParam {string} old_password 旧密码
@apiParam {string} new_password 新密码
@apiSuccessExample Success-Response:
{
'code': 0,
'message': '修改密码成功'
}
@apiErrorExample Error-Response:
{
'code': 1,
'message': '用户名不存在/修改密码失败'
}
"""
oldpassword = request.POST.get('old_password')
newpassword = request.POST.get('new_password')
try:
user = request.user
if user.check_password(oldpassword): # 判断前端传过来的密码是否正确,如果正确,返回一个值
user.set_password(newpassword) # 把前端输入的新密码加密放进数据库里面
user.save()
update_session_auth_hash(request, user) # 更新session,因为原来的session存放的是旧密码
else:
return JsonResponse({'code': 1, 'message': '用户名或旧密码错误'})
except Exception as e:
logger.error(e)
return JsonResponse({'code': 1, 'message': '服务器异常'})
return JsonResponse({'code': 0, 'message': '修改密码成功'})
网友评论