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 键”
  • 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 “登出成功”
  • 配置项                                        说明                                     示例值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(生产环境推荐)           TrueSESSION_COOKIE_HTTPONLY             禁止 JS 访问 Cookie(防 XSS,推荐)           TrueSESSION_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()内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: Flask之flask-session的具体使用 flask使用session保存登录状态及拦截未登录请求代码 flask session组件的使用示例 flask框架中的cookie和session使用 Blueprint实现路由分组及Flask中session的使用详解 Flask框架中的session设置详解 一文带你深入理解Flask中的Session和Cookies Flask 入门系列 Cookie与session的介绍
  • 目录
    • 一、基础操作:取值 / 赋值 / 判断
    • 二、删除 / 清空操作:移除 Session 数据
    • 三、配置相关: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 键"
    

    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 "登出成功"
    

    配置项                                        说明                                     示例值
    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()内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

    您可能感兴趣的文章:

    • Flask之flask-session的具体使用
    • flask使用session保存登录状态及拦截未登录请求代码
    • flask session组件的使用示例
    • flask框架中的cookie和session使用
    • Blueprint实现路由分组及Flask中session的使用详解
    • Flask框架中的session设置详解
    • 一文带你深入理解Flask中的Session和Cookies
    • Flask 入门系列 Cookie与session的介绍

    站内搜索