fastapi 设置Cookie后重定向的demo
时间: 2023-11-21 22:05:14 浏览: 35
当然可以,请参考以下代码:
```python
from fastapi import FastAPI, Response
app = FastAPI()
@app.get("/set-cookie")
def set_cookie(response: Response):
response.set_cookie(key="example", value="cookie_value")
response.headers["Location"] = "/get-cookie"
response.status_code = 302
```
这是一个简单的示例,在 `/set-cookie` 路径下,我们设置了一个名为 `example` 值为 `cookie_value` 的 cookie,然后将响应状态码设置为 302,并将响应头中的 `Location` 设置为 `/get-cookie`,表示浏览器应该重定向到 `/get-cookie` 路径。最后,我们返回响应对象 `response`。
相关问题
fastapi Session 设置过期时间 demo
Sure, here's a demo of setting the expiration time for a session in FastAPI:
```
from fastapi import FastAPI, Request, Response, APIRouter, Depends, HTTPException, status
from fastapi.templating import Jinja2Templates
from fastapi.security import OAuth2PasswordRequestForm
from datetime import timedelta
app = FastAPI()
router = APIRouter()
templates = Jinja2Templates(directory="templates")
def get_settings():
return settings
# Configurations
class Settings(BaseSettings):
access_token_expire_minutes: int = 30
refresh_token_expire_days: int = 30
api_prefix: str
settings = Settings()
# Session
router = APIRouter()
ACCESS_TOKEN_EXPIRE_MINUTES = settings.access_token_expire_minutes
@router.post("/login/access-token")
async def login_access_token(
form_data: OAuth2PasswordRequestForm = Depends(),
session: Session = Depends(get_session),
):
user = authenticate_user(session, form_data.username, form_data.password)
if not user:
raise HTTPException(status_code=400, detail="Incorrect username or password")
access_token_expires = timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES)
access_token = create_access_token(
data={"sub": user.email}, expires_delta=access_token_expires
)
return {"access_token": access_token, "token_type": "bearer"}
async def on_startup():
app.session_cookie_name = "access_token"
app.include_router(router)
return
@app.on_event("startup")
async def startup():
await on_startup()
```
Hope that helps! Let me know if you have any more questions.
fastapi表单提交 设置cookie
当用户在 FastAPI 中提交表单时,可以设置 cookie。可以使用 `starlette.middleware.sessions.SessionMiddleware` 中间件来为应用程序添加会话支持,以便将 cookie 和其他会话数据存储在服务器上。要设置 cookie,可以使用 `fastapi.responses.JSONResponse.set_cookie` 方法。