flask模块之session()方法实现

 更新时间:2026年01月14日 09:25:32   作者:Hi~晴天大圣  
Flask的session基于Werkzeug实现,用于在请求间存储用户状态,文章详细介绍了session的赋值、取值、删除、校验及配置等操作,感兴趣的可以了解一下

Flask 的 session 是基于 Werkzeug 实现的类字典对象,用于在请求间存储用户状态(默认加密存储在客户端 Cookie 中)。以下是 Flask session 核心方法 / 操作的完整汇总,涵盖取值、赋值、删除、校验、配置等全场景。

一、基础操作:取值 / 赋值 / 判断

1、 赋值:设置 Session 键值对

直接通过「键 = 值」赋值,支持所有可序列化数据(字符串、数字、列表、字典等,不支持对象 / 函数)

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、取值

方法                                           说明                                                                示例
session[key]                     直接取值,键不存在抛 KeyError                    name = session["username"]
session.get(key[, default])         安全取值,键不存在返回 None/ 自定义默认值            age = session.get("age", 0)

3、判断键是否存在

@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、删除单个键

方法	                                    说明	                                 示例
del session[key]	            直接删除,键不存在抛 KeyError	             del session["username"]
session.pop(key[, default])	    安全删除,返回键值,键不存在返回默认值	      age = session.pop("age", 0)

2、 清空所有 Session

@app.route("/clear")
def clear_session():
    # 方式1:clear() 方法(推荐)
    session.clear()
    return "所有 Session 已清空"

3、登出场景(典型示例)

@app.route("/logout")
def logout():
    # 直接清空session
    session.clear()
    return "登出成功"

三、配置相关:Session 安全与存储

配置项                                        说明                                     示例值
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"

示例:

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

四、方法速查表(汇总)

操作类型                         方法 / 语法                       核心作用
赋值               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 唯一标识

到此这篇关于flask模块之session()方法实现的文章就介绍到这了,更多相关flask session()内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python csv实时一条一条插入且表头不重复问题

    python csv实时一条一条插入且表头不重复问题

    这篇文章主要介绍了python csv实时一条一条插入且表头不重复问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • Python matplotlib实用绘图技巧汇总

    Python matplotlib实用绘图技巧汇总

    这篇文章主要给大家介绍了关于Python matplotlib实用绘图技巧的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • python自动化生成IOS的图标

    python自动化生成IOS的图标

    这篇文章主要为大家详细介绍了python如何自动化生成IOS的图标,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • Python Pyecharts绘制箱线图详解

    Python Pyecharts绘制箱线图详解

    箱形图(Box-plot)又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图。因形状如箱子而得名。本文将通过Python Pyecharts来绘制一些箱线图,需要的可以参考一下
    2022-03-03
  • python3.7+selenium模拟淘宝登录功能的实现

    python3.7+selenium模拟淘宝登录功能的实现

    这篇文章主要介绍了python3.7+selenium模拟登录淘宝功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • Django admin组件的使用

    Django admin组件的使用

    这篇文章主要介绍了Django admin组件的使用,帮助大家更好的理解和学习Django框架,感兴趣的朋友可以了解下
    2020-10-10
  • linux环境打包python工程为可执行程序的过程

    linux环境打包python工程为可执行程序的过程

    本次需求,在ubuntu上面开发的python代码程序需要打包成一个可执行程序然后交付给甲方,因为不能直接给源码给甲方,所以寻找方法将python开发的源码打包成一个可执行程序,本次在ubuntu上打包python源码的方法和在window上打包的有点类似,感兴趣的朋友跟随小编一起看看吧
    2024-01-01
  • Python自动化之UnitTest框架实战记录

    Python自动化之UnitTest框架实战记录

    这篇文章主要给大家介绍了关于Python自动化之UnitTest框架实战的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • python实现ssh及sftp功能(实例代码)

    python实现ssh及sftp功能(实例代码)

    这篇文章主要介绍了python实现ssh及sftp功能 ,本文分步骤通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • Python3中PyQt5简单实现文件打开及保存

    Python3中PyQt5简单实现文件打开及保存

    本文将结合实例代码,介绍Python3中PyQt5简单实现文件打开及保存,具有一定的参考价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-06-06

最新评论