Flask 的 session 是基于 Werkzeug 实现的类字典对象,用于在请求间存储用户状态(默认加密存储在客户端 Cookie 中)。以下是 Flask session 核心方法 / 操作的完整汇总,涵盖取值、赋值、删除、校验、配置等全场景。
一、基础操作:取值 / 赋值 / 判断
1、 赋值:设置 Session 键值对
直接通过「键 = 值」赋值,支持所有可序列化数据(字符串、数字、列表、字典等,不支持对象 / 函数)
python
from flask import Flask, session
app = Flask(__name__)
app.secret_key = "your_strong_secret_key" # 必须设置加密秘钥
@app.route("/set")
def set_session():
# 基础类型
session["username"] = "admin"
session["age"] = 25
session["is_vip"] = True
# 复杂类型(需可序列化)
session["hobbies"] = ["coding", "reading"]
session["profile"] = {"city": "Wuhan", "phone": "13800138000"}
return "Session 设置成功"
2、取值
python
方法 说明 示例
session[key] 直接取值,键不存在抛 KeyError name = session["username"]
session.get(key[, default]) 安全取值,键不存在返回 None/ 自定义默认值 age = session.get("age", 0)
3、判断键是否存在
python
@app.route("/check")
def check_session():
# 方式1:in 关键字(推荐)
if "username" in session:
return f"存在 username:{session['username']}"
# 方式2:get() 判断 None
if session.get("is_vip") is not None:
return "VIP 状态已设置"
return "未找到指定 Session 键"
二、删除 / 清空操作:移除 Session 数据
1、删除单个键
python
方法 说明 示例
del session[key] 直接删除,键不存在抛 KeyError del session["username"]
session.pop(key[, default]) 安全删除,返回键值,键不存在返回默认值 age = session.pop("age", 0)
2、 清空所有 Session
python
@app.route("/clear")
def clear_session():
# 方式1:clear() 方法(推荐)
session.clear()
return "所有 Session 已清空"
3、登出场景(典型示例)
python
@app.route("/logout")
def logout():
# 直接清空session
session.clear()
return "登出成功"
三、配置相关:Session 安全与存储
python
配置项 说明 示例值
SECRET_KEY 加密 Session 的秘钥(必须设置) os.urandom(24)(随机强秘钥)
PERMANENT_SESSION_LIFETIME 持久化 Session 过期时间 timedelta(days=7)
SESSION_COOKIE_NAME Session Cookie 的名称(默认:session) "flask_session"
SESSION_COOKIE_SECURE 仅 HTTPS 传输 Cookie(生产环境推荐) True
SESSION_COOKIE_HTTPONLY 禁止 JS 访问 Cookie(防 XSS,推荐) True
SESSION_COOKIE_SAMESITE 限制 Cookie 跨域发送(防 CSRF) "Lax"/"Strict"
示例:
python
import os
from datetime import timedelta
app = Flask(__name__)
# 随机强秘钥(生产环境从环境变量读取)
app.secret_key = os.environ.get("FLASK_SECRET_KEY") or os.urandom(24)
# 持久化过期时间
app.permanent_session_lifetime = timedelta(days=1)
# 安全配置
app.config["SESSION_COOKIE_SECURE"] = True # 仅 HTTPS
app.config["SESSION_COOKIE_HTTPONLY"] = True # 防 XSS
app.config["SESSION_COOKIE_SAMESITE"] = "Lax" # 防 CSRF
四、方法速查表(汇总)
python
操作类型 方法 / 语法 核心作用
赋值 session[key] = value 设置 Session 键值对
取值 session.get(key[, default]) 安全取值,避免 KeyError
判断存在 key in session 检查键是否存在
删除单个键 session.pop(key[, default]) 安全删除键并返回值
清空所有 session.clear() 清空全部 Session 数据
持久化配置 session.permanent = True 标记 Session 持久化
手动更新 session.modified = True 强制标记 Session 已修改
获取SessionID session.sid 获取当前 Session 唯一标识