Flask JWT Ext get_current_user(),get_JWT_identity()返回None,尽管



感谢您的光临。我正在尝试实现Flask-JWT-Ext。我已经实施了redis黑名单,以便撤销我的代币。

我正在尝试使用get_current_user((、get_jwt_identity((等,但它返回None,尽管使用@jwt_required decorator传递了访问令牌。。。

这是我的登录(它正确地生成访问和刷新令牌(:

@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.route置于jwt_required之前

最新更新