一个很常见的场景,比如需要在每个接口里做一个token检查,这里是为了讲解装饰器的用法而举的一种特殊需求,而一般情况不会这么使用,而是使用
from flask_jwt_extended import JWTManager, create_access_token, jwt_required, get_jwt_identity
在方法上加上注解:
@app.route('/euih', methods=['POST']) @jwt_required()
方法在方法里:
# current_user = get_jwt_identity()
类似这样的代码来实现token校验和相关逻辑。
回到正题,假如有一个需求,要在每个方法上做一个前置的检查:chek_token(data)
普通的做法,也是比较容易维护,比容容易看得懂的,是在每个方法里加上这段代码:
if not check_token(tempToken): return jsonify(data={}, message="Token has expired"), 401
我现在想用装饰器来改造,让这个检查逻辑转移到一个隐秘的地方,这个时候就用到了装饰器Decorator(在Java通常使用拦截器,或者代理模式),代码如下:
欢迎大家一起交流,学习,指正。