会话与 Cookie

Flask 默认使用签名 Cookie 实现会话(基于 SECRET_KEY),也可切换服务器端方案(如 Redis)。

读取/设置 Cookie:

from flask import request, make_response

@app.get("/get-cookie")
def get_cookie():
    return request.cookies.get("sid")

@app.get("/set-cookie")
def set_cookie():
    resp = make_response("ok")
    resp.set_cookie("sid", "abc", httponly=True, samesite="Lax", max_age=3600)
    return resp

Session:

from flask import session

@app.get("/login")
def login():
    session["uid"] = 1
    return "ok"

@app.get("/me")
def me():
    return {"uid": session.get("uid")}

服务器端会话:使用扩展(如 Flask-Session)存储到 Redis/Memcached。

pip install flask-session redis

安全:设置 SESSION_COOKIE_SECURE=True 在 HTTPS 下启用 Secure;合理设置 SameSite、防止 CSRF 与会话固定。