fastapi add_middleware 如何根据 sessionid 删除
时间: 2023-11-12 09:04:33 浏览: 51
在 FastAPI 中使用中间件添加一个 `sessionid` 的话,你可以通过在中间件中保存一个字典,将 `sessionid` 与其他相关信息一一对应起来。然后,在需要删除 `sessionid` 对应信息时,你可以在路由处理函数中调用一个删除函数,根据 `sessionid` 从字典中删除相应信息。
以下是一个简单的示例代码,用于说明如何实现这个功能:
```python
from fastapi import FastAPI, Request
app = FastAPI()
sessions = {}
async def session_middleware(request: Request, call_next):
sessionid = request.cookies.get("sessionid")
request.state.sessionid = sessionid
response = await call_next(request)
return response
@app.post("/login")
async def login(sessionid: str):
if sessionid not in sessions:
sessions[sessionid] = {}
# do login
return {"message": "login success"}
@app.post("/logout")
async def logout(request: Request):
sessionid = request.state.sessionid
del sessions[sessionid]
# do logout
return {"message": "logout success"}
app.add_middleware(session_middleware)
```
在上面的例子中,我们定义了一个 `sessions` 字典,用于保存所有 `sessionid` 对应的信息。在 `session_middleware` 中,我们获取请求中的 `sessionid`,然后将其保存在 `request.state` 中,以便在路由处理函数中使用。在 `logout` 函数中,我们通过 `request.state` 获取 `sessionid`,然后在 `sessions` 字典中删除相应信息。