Django 修改密码后session失效 用户不能继续保持登录状态问题

解决方法 更新密码后 更新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': '修改密码成功'})

你可能感兴趣的:(Django 修改密码后session失效 用户不能继续保持登录状态问题)