1 起因
在检验接口权限的设计中, 我们需要确认接口的代码, 并使用一个通用的装饰器, 此时我们就需要一个支持参数的装饰器函数
2 解决方案
直接上代码
def authorization(code: str = None):
def decorator(fn):
@wraps(fn)
def wrapper(*args, **kwargs):
try:
verify_jwt_in_request()
except Exception:
raise BusinessException("无访问权限", 403)
if code is None:
return fn(*args, **kwargs)
authorities = get_jwt()['authorities']
if code not in authorities:
raise BusinessException("无访问权限", 403)
return fn(*args, **kwargs)
return wrapper
return decorator
其中code为接口权限代码