Flask_restful 中 如何使用 jwt_required装饰器保护api?

Flask_restful 中 如何使用 jwt_required装饰器保护api?

flask_restful默认使用类视图,而jwt里要用@jwt_required装饰器检验token。
我试过在method_decoratorsdecorators里添加装饰器,都报错了,我看了下源码,好像@jwt_required的结构和普通的装饰器结构不一样?

class AddUser(Resource):

method_decorators = [jwt_required] # 这样没用

def post(self):

求大佬指点。

报错信息:

TypeError: wrapper() missing 1 required positional argument: 'fn'

一般装饰器应该是这样的:

def auth(func):

def wrapper(*args, **kwargs):

...

res = func(*args, **kwargs)

return res

return wrapper

jwt_required的源码:

def jwt_required(

optional: bool = False,

fresh: bool = False,

refresh: bool = False,

locations: LocationType = None,

verify_type: bool = True,

) -> Any:

def wrapper(fn):

@wraps(fn)

def decorator(*args, **kwargs):

verify_jwt_in_request(optional, fresh, refresh, locations, verify_type)

return current_app.ensure_sync(fn)(*args, **kwargs)

return decorator

return wrapper


回答:

直接这样使用

class AddUser(Resource):

method_decorators = [jwt_required()]

def post(self):

pass


flask_jwt的装饰器其实只需要一层即可。而jwt_required封装了两层。

以上是 Flask_restful 中 如何使用 jwt_required装饰器保护api? 的全部内容, 来源链接: utcz.com/p/938430.html

回到顶部