python-3.x - 如何在中间件中使用 `fastapi_another_jwt_auth` 而不是通过 FastAPI 中的依赖注入(inject)?

标签 python-3.x jwt fastapi

我有一个 FastAPI 项目,它使用 fastapi_another_jwt_auth 作为对用户进行身份验证的方式。我打算在除了少数白名单端点之外的大多数端点中实现它,但我发现很难对需要身份验证的端点进行单元测试,因此我正在考虑使用简单的 if- 在中间件中实现它else 检查白名单端点。这样,我只需要禁用中间件来运行单元测试,身份验证测试就变得微不足道,因为我们只是针对白名单进行测试。

fastapi_another_jwt_auth 的 API 似乎是围绕 FastAPI 依赖注入(inject)的概念设计的。有没有办法在中间件中使用相同的库?

最佳答案

我查看了 fastapi_another_jwt_auth 的代码。显然,注入(inject)时,框架运行 AuthJWT 构造函数,该构造函数接收 RequestResponse 对象。如下所示。

class AuthJWT(AuthConfig):
    def __init__(self,req: Request = None, res: Response = None):
        ...

一旦成功初始化,我们就可以使用.jwt_required()方法。

所以在中间件中实现的方式是:

@app.middleware("http")
async def middleware_callback(req, call_next):
    if not whitelisted: # this is pseudocode
        auth = AuthJWT(req)
        auth.jwt_required() # throws error when user is not authenticated

    # rest of the logic
    ...

这样,我就可以在中间件级别管理所有身份验证,并且不必将 AuthJWT 对象注入(inject)到我的 View 函数中。

关于python-3.x - 如何在中间件中使用 `fastapi_another_jwt_auth` 而不是通过 FastAPI 中的依赖注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73903098/

相关文章:

python - turtle 代码被执行,但不在canvas中绘制

python - 用openai图表txt文件编码到midi转换器

node.js - 使用JWT token 时应如何处理RESTful身份验证?

javascript - JWT API token 存储

file-upload - 将小文件上传到 FastAPI 端点,但上传文件内容为空

python-3.x - 如何使用FastApi和SqlAlchemy进行异步操作

python - Pycharm 无法识别内置函数

node.js - NodeJS 加密 RS-SHA256 和 JWT 承载

logging - FastAPI uvicorn 不记录错误

python - 发生了什么 b=a[ :] in python?