gpt4 book ai didi

python - 在 flask-reSTLess 预处理器中访问请求 header

转载 作者:行者123 更新时间:2023-11-28 20:45:19 26 4
gpt4 key购买 nike

我正在使用 Flask-ReSTLess 构建一个 API,它需要一个 API key ,该 key 将位于 Authorization HTTP header 中。

在 Flask-ReSTLess 示例中 here对于预处理器:

def check_auth(instance_id=None, **kw):
# Here, get the current user from the session.
current_user = ...
# Next, check if the user is authorized to modify the specified
# instance of the model.
if not is_authorized_to_modify(current_user, instance_id):
raise ProcessingException(message='Not Authorized',
status_code=401)
manager.create_api(Person, preprocessors=dict(GET_SINGLE=[check_auth]))

如何在 check_auth 函数中检索 Authorization header ?

我已尝试访问 Flask response 对象,但在此函数的范围内它是 Nonekw 参数也是一个空字典。

最佳答案

在正常的 Flask 请求-响应周期中,request context在运行 Flask-Restful 预处理器和后处理器时处于事件状态。

因此,使用:

from flask import request, abort

def check_auth(instance_id=None, **kw):
current_user = None
auth = request.headers.get('Authorization', '').lower()
try:
type_, apikey = auth.split(None, 1)
if type_ != 'your_api_scheme':
# invalid Authorization scheme
ProcessingException(message='Not Authorized',
status_code=401)
current_user = user_for_apikey[apikey]
except (ValueError, KeyError):
# split failures or API key not valid
ProcessingException(message='Not Authorized',
status_code=401)

应该可以正常工作。

关于python - 在 flask-reSTLess 预处理器中访问请求 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23833708/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com