首页 > 解决方案 > 如何在烧瓶中更新 JWT 身份?

问题描述

我正在尝试创建更新帐户视图,当用户单击更新时,我正在刷新令牌并获取 jwt 身份。

但是 jwt 身份没有改变,用户保持与更新前相同。数据库正在更新,但 jwt 身份没有更新。

那么如何更新身份呢?如果我只有当前的 jwt 令牌和刷新令牌。

这是我的路线

@app.route('/current-user', methods=['GET'])
@jwt_required
def get_current_user():
    # Access the identity of the current user with get_jwt_identity
    try:
        current_user = get_jwt_identity()
        if current_user:
            return Response(json.dumps({"logged_in_as":current_user}), status=200, mimetype='application/json')
        else:
            return Response(json.dumps({"error":"Couldn't get user details"}), status=404, mimetype='application/json')
    except:
        return Response(json.dumps({"error":"Something went wrong"}), status=400, mimetype='application/json')

@app.route('/refresh', methods=['POST'])
@jwt_refresh_token_required
def refresh():
    current_user = get_jwt_identity()
    new_token = create_access_token(identity=current_user)
    ret = {'access_token': new_token,"logged_in_as":current_user}
    return Response(json.dumps(ret), status=200, mimetype='application/json')

标签: flaskjwt

解决方案


JWT 身份完全存储在令牌中,它不会从数据库中获取该信息,因此在创建新的 JWT 之前不会反映数据库中的任何更新。

看起来您正在使用flask-jwt-extended。以下是使用该扩展在每个请求中从数据库加载用户的方法:https ://flask-jwt-extended.readthedocs.io/en/stable/complex_objects_from_token/


推荐阅读