Skip to main content

Module session

Module session 

Source
Expand description

Session 模块 — 对齐 PHP think\facade\Session

本模块实现会话管理,对齐 PHP think-session 包的核心 API。

§PHP 对齐

§核心 API 映射

PHP 方法Rust 方法说明
Session::set($name, $value)Session::set设置会话数据
Session::get($name = null, $default = null)Session::get / Session::get_with_default获取会话数据
Session::delete($name)Session::delete删除会话数据
Session::has($name)Session::has检查会话数据是否存在
Session::clear()Session::clear清空当前会话所有数据
Session::flash($name, $value)Session::flash设置一次性数据(下次请求后自动删除)
Session::flush()Session::flush清空并清除 flash 数据

§PHP 行为对齐

  • 命名空间隔离:PHP 通过 prefix 配置项实现会话命名空间隔离。 Rust 通过 Session::with_prefix 提供 per-instance 前缀。
  • Flash 数据:PHP flash() 设置的数据在下次请求开始时通过 clearFlashData() 自动清除。Rust 通过 Session::clear_flash 显式清除 (由中间件在请求结束时调用)。

§架构说明

本模块仅提供数据存储 API,不涉及 session ID 管理和 Cookie 传输。 这些由后续的 axum 中间件层处理(通过 Set-Cookie: SZ_SESSION_ID=xxx 头)。

§后端存储驱动

通过 SessionStore trait 抽象,内置 MemorySessionStore 实现:

  • MemorySessionStore:基于 parking_lot::RwLock<HashMap<String, Value>> 的内存存储,适用于单进程开发环境。生产环境可自定义实现 Redis/数据库后端。

Structs§

MemorySessionStore
内存 Session 存储(基于 HashMap)
Session
会话实例 — 对齐 PHP think\Session

Traits§

SessionStore
Session 存储后端 trait