Flask JWT:get_jwt_identity() 没有@jwt_required 总是return 非

Flask JWT : get_jwt_identity() without @jwt_required always return Non

我正在构建一个 Flask JWT 扩展应用程序,这是我想要做的:

我已经向所有人开放端点(即没有装饰器@jwt_required,每个人都可以访问 link)

但如果有人通过身份验证访问此 link,我希望能够取回他的身份,类似这样的事情:

@bp.route('/test', methods=('GET', 'POST'))
def test() -> str:
    identity = get_jwt_identity()
    print(a)
    if identity is not None:
        # do something
    else:
        # do other stuff

问题是没有装饰器,get_jwt_identity总是returnNone

有办法做到吗?

谢谢

如果您使用的是 4.x.x 版本,请使用 @jwt_required(optional=True)。如果您仍在使用 3.x.x 版本,请使用 @jwt_optional

如果您想在未受保护的端点上解码自定义访问令牌。您需要使用 flask-jwt-extended

中的 decode_token
 from flask_jwt_extended import decode_token

 def post(self):
        data = ResetPassword.parser.parse_args()
        reset_token = data['reset_token']
        decoded_token = decode_token(reset_token)['sub'] 

当您从

创建令牌时,sub 指的是“身份”
    access_token = create_access_token(identity=user.get_id())