簡體   English   中英

盡管有令牌,Flask-JWT-Ext get_current_user(), get_jwt_identity() 返回 None

[英]Flask-JWT-Ext get_current_user(), get_jwt_identity() returns None despite having tokens

謝謝參觀。 我正在嘗試實現 Flask-JWT-Ext。 我實施了 redis 黑名單以撤銷我的令牌。

我正在嘗試使用 get_current_user()、get_jwt_identity() 等,但它返回 None,盡管使用 @jwt_required 裝飾器傳遞訪問令牌...

這是我的登錄名(正確生成訪問和刷新令牌):

@app.route('/login', methods=['POST'])
def check_login_info():
    '''
    Login user
    '''
    arw = ApiResponseWrapper()
    login_data = request.get_json()
    
    try:
        matching_login = Login.query.filter_by(username=login_data['username']).one()
        matching_login.check_password(login_data['password_hash'])

        access_token = create_access_token(identity=matching_login.username)
        access_jti = get_jti(encoded_token=access_token)
        revoked_store.set(access_jti, 'false', timedelta(minutes=15) * 1.2)

        refresh_token = create_refresh_token(identity=matching_login.username)
        refresh_jti = get_jti(encoded_token=refresh_token)
        revoked_store.set(refresh_jti, 'false',  timedelta(days=30) * 1.2)

        tokens = {
            'access_token': access_token,
            'refresh_token': refresh_token
        }

    except (MultipleResultsFound, NoResultFound):
        arw.add_errors('No result found or multiple results found')

    except ValueError:
        arw.add_errors('Value error')

    except BadRequestsError:
        arw.add_errors('Bad requests error')

    if arw.has_errors():
        return arw.to_json(None, 400)

    return jsonify(tokens), 201

我無法在不同的路線上使用 get_current_user() 等,所以我制作了一個示例來測試它。 盡管在標頭中傳遞了正確的令牌,但它為當前用戶和身份返回 None 。

@jwt_required
@app.route('/check', methods=['GET'])
def check_login():
    current_user = get_current_user()
    user_has_tokens = get_jwt_identity()
    return jsonify({"user": current_user, "tokens": user_has_tokens}), 201

你知道我缺少什么嗎? 我肯定正確設置了redis黑名單並使用create_access_token等工作生成令牌。

謝謝

您的裝飾器順序是倒退的。 app.routejwt_required

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM