1

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

我有对所有人开放的端点(即没有装饰器@jwt_required,每个人都可以访问链接)

但是如果有人通过身份验证访问此链接,我希望能够取回他的身份,例如:

@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 总是返回 None

有没有办法做到这一点?

谢谢

4

2 回答 2

1

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

于 2021-04-25T13:15:42.497 回答
-1

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

 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())
于 2021-08-13T16:00:45.730 回答