锵锵枪 wrote:
使用FastAPI搭建网站(四):使用cookie和session ###读取Cookie 与Path、Query、Form参数一样,FastAPI使用相同的方式读取Cookie参数 ![cookie](https://ww3.sinaimg.cn/large/612edf3ajw1e2u8o36gogj.jpg) ``` from fastapi import Cookie ... @app.get("/") async def index(user: str = Cookie(...)): return user ``` ###设置Cookie FastAPI可以通过 Response 类设置cookie ``` from fastapi import Response ... @app.post("/") def create_cookie(response: Response): response.set_cookie(key="user", value="锵锵枪") return "Hello World" ``` ###使用Session FastAPI本身不支持Session,但是我们可以引入 starlette 的中间件 SessionMiddleware 来实现,当然也可以自己写一个session类来处理session。session的使用非常简单,只要我们引入Request,就能在路径函数,模版等任意地方通过 request['session'] 使用session。 ![网络安全](https://wx1.sinaimg.cn/large/006VkBIply1ghmwrt83kzj30bg07tdkv.jpg) ``` from starlette.middleware.sessions import SessionMiddleware app.add_middleware(SessionMiddleware, secret_key='secret_key',max_age=25200,session_cookie='xxx_sid') async def signin(request: Request , name : str = Form(...)): if( name == admin['account'] ): request['session']['user'] = admin['user'] ``` - secret_key 是加密密钥,用于session数据的加密存储 - max_age 是session的有效期 - session_cookie session的cookieID SessionMiddleware的session数据是直接加密后存储在cookie里的,我们也可以自己修改 SessionMiddleware 来存储在 redis、文件、memecache和Nosql之类的地方。 Done.
锵锵枪 2020-08-22 21:52  0 回复