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§
- Memory
Session Store - 内存 Session 存储(基于 HashMap)
- Session
- 会话实例 — 对齐 PHP
think\Session
Traits§
- Session
Store - Session 存储后端 trait