我希望在我的 FastAPI 应用程序中集成基于 Cookie 的身份验证。我也希望它能够与 swagger 无缝协作。
我想要一条路线(例如:/login
)来设置我的浏览器 cookie。所有其他受保护的路由在装饰器中使用 Depends
来验证 cookie 中存在的密钥。如何让它与 OpenAPI 授权按钮一起使用?
此处的重要因素是与 FastAPI 自动生成的 Swagger/OpenAPI 文档集成。
答案 0 :(得分:1)
您可以查看实现基于 cookie 的身份验证的 fastapi-users 模块(它也实现了其他与用户管理相关的内容,因此无论如何都值得一看!)。
根据coookie docs:
<块引用>配置
from fastapi_users.authentication import CookieAuthentication
SECRET = "SECRET"
auth_backends = []
cookie_authentication = CookieAuthentication(secret=SECRET, lifetime_seconds=3600)
auth_backends.append(cookie_authentication)
如您所见,实例化非常简单。你只需要定义 用于对令牌和生命周期进行编码的常量 SECRET cookie(以秒为单位)。
您还可以为生成的 cookie 定义参数:
然后您可以在 login
端点上使用 POST
请求 /login
并在浏览器上设置 cookie。
我没有找到有关自动 OpenAPI 集成的信息,但由于登录是在浏览器上设置 cookie,因此您可以登录一次然后使用 API。