Flask_restful 中 如何使用 jwt_required装饰器保护api?
flask_restful默认使用类视图,而jwt里要用@jwt_required
装饰器检验token。
我试过在method_decorators
或decorators
里添加装饰器,都报错了,我看了下源码,好像@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