当前位置: 代码网 > it编程>前端脚本>Python > flask模块之session()方法实现

flask模块之session()方法实现

2026年01月14日 Python 我要评论
flask 的 session 是基于 werkzeug 实现的类字典对象,用于在请求间存储用户状态(默认加密存储在客户端 cookie 中)。以下是 flask 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()内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com