如何在没有装饰器的情况下进行Flask REST api密钥验证?

时间:2016-04-03 21:51:14

标签: rest flask

我是Flask的新手,我试图完成以下任务:

对于特定路由的所有子路由,我想提取一个参数并验证是否已通过GET参数或标题密钥提供了api密钥。

理想的情况是,如果我可以嵌套蓝图。然后我会做以下事情:

有一个主蓝图来提取参数并验证api密钥:

@secured_api.url_value_preprocessor
def pull_tenant(endpoint, values):
    g.tenant_code = values.pop('tenant')

@secured_api.before_request
def validate_api_key():
    api_key = request.headers.get('X-Api-Key')
    ...
    if (api_key is None):
        raise InvalidApiKey()

然后,用我的资源(v1_bp)获得另一个蓝图,我可以这样做:

secured_api.register_blueprint(v1_bp, url_prefix="/v1")
app.register_blueprint(secured_api, url_prefix='/secured/<tenant>')

这样所有的v1_bp路由都在/安全// v1

之下

实现这一目标的最佳方式是什么?

提前致谢!

0 个答案:

没有答案