gpt4 book ai didi

python - Aiohttp认证中间件

转载 作者:行者123 更新时间:2023-12-02 09:05:05 31 4
gpt4 key购买 nike

我想将中间件附加到特定处理程序,如果客户端未获得授权,则希望返回错误响应。但是使用以下代码:

async def middleware_factory(app, handler):
async def auth_handler(request):
if request.headers.get('Authorization') == 'Basic test1234':
return await handler(request)
return web.Response(text='Forbidden', status='403')
return auth_handler

我收到一个异常:

AssertionError: Handler <function AbstractRoute.__init__.
<locals>.handler_wrapper at 0x10da56bf8> should return response
instance, got <class 'NoneType'> [middlewares [<function
middleware_factory at 0x1104cb268>]]

文档指出我应该返回一个我正在做的响应对象。还是这个错误。我哪里出错了?

最佳答案

您可以查看an example from official documentation .

但是,如果您想要中间件工厂,主要关心的是需要是一个函数而不是协程。另外,建议使用 @web.middleware 装饰器。

from aiohttp import web

def middleware_factory(text):
@web.middleware
async def sample_middleware(request, handler):
resp = await handler(request)
resp.text = resp.text + text
return resp
return sample_middleware

关于python - Aiohttp认证中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41737468/

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