【发布时间】:2017-06-02 02:37:57
【问题描述】:
我有一个包含大量自动定义规则的应用程序。在继续之前,我需要每条规则来检查 Bearer 令牌。
我找到了app.url_map.iter_rules(),它确实让我看到了所有定义的规则。我想要一种方法来重新定义每个规则以使用其当前功能,但使用下面定义的 authenticate_admin 装饰器包装它。
from flask import Flask
from functools import wraps
app = Flask(__name__)
# Check that the request has the correct `bearer_token`.
def authenticate_admin(func):
@wraps(func)
def wrapped(*args, **kwargs):
bearer_token = vault.get('secret/oauth')['bearer_token']
expected = ("Bearer " + bearer_token)
if expected != request.headers.get('Authorization'):
return jsonify({'error': "Authorization token incorrect"}), 401
return func(*args, **kwargs)
return wrapped
# .... Define a bunch of routes (Elided) ....
for rule in app.url_map.iter_rules():
# NEXT LINE IS PSEUDOCODE; IT IS WHAT I WANT TO ACHIEVE
rule.fx = authenticate_admin(rule.fx)
我想要的是,在上述 for 循环执行后,所有规则现在都要求您提供 Bearer 令牌。
【问题讨论】:
标签: python google-app-engine flask decorator