fiberphp / session
🍪 FiberPHP 会话组件 —— 基于 Cookie+Redis 的会话管理,支持 Flash 闪存、CSRF Token、自动续期,协程安全。
dev-master
2026-08-24 15:00 UTC
Requires
- php: >=8.3
- fiberphp/framework: dev-master
Requires (Dev)
- phpunit/phpunit: ^11.0
This package is auto-updated.
Last update: 2026-08-24 15:00:47 UTC
README
基于 Cookie+Redis 的会话管理,支持 Flash 闪存、CSRF Token、自动续期。
目录结构
src/
├── SessionManager.php # 会话管理器(生命周期/数据访问/Flash/CSRF)
├── Store.php # 数据容器(data + newFlash + oldFlash)
├── SessionMiddleware.php # HTTP 中间件(加载/保存/写 Cookie)
├── SessionProvider.php # 服务提供者
├── Install.php # 安装器(发布配置 + 注册 Provider)
├── Contract/
│ └── DriverInterface.php # 存储驱动契约
├── Driver/
│ ├── FileDriver.php # 文件存储(默认)
│ └── RedisDriver.php # Redis 存储
└── helpers.php # 助手函数 session()
config/
└── session.php # 配置文件
tests/
├── SessionTest.php # 14 个测试用例
└── bootstrap.php
安装
composer require fiberphp/session
配置
config/session.php:
return [
'driver' => 'file', // file | redis
'name' => 'fiberphp_session', // cookie name
'lifetime' => 7200, // 过期时间(秒)
'encrypt' => false, // 是否加密
'path' => '/',
'domain' => '',
'secure' => false,
'httponly' => true,
'same_site' => 'lax',
'file' => ['path' => runtime_path('sessions')],
'redis' => ['connection' => 'default'],
];
快速开始
基本操作
// 写入
session()->set('user_id', 123);
// 读取
$userId = session()->get('user_id');
// 判断
session()->has('user_id');
// 删除
session()->forget('user_id');
// 清空
session()->flush();
Flash 闪存(一次性数据)
// 设置闪存(下次请求可用,之后自动消失)
session()->flash('success', '操作成功');
// 读取闪存
$message = session()->getFlash('success');
// 延长所有闪存存活
session()->reflash();
// 延长指定闪存存活
session()->keep(['success', 'error']);
CSRF Token
// 生成 Token
$token = session()->token();
// 验证 Token
if (session()->verifyToken($inputToken)) {
// 验证通过
}
会话迁移
// 重新生成 Session ID(登录后防止固定攻击)
session()->regenerate();
中间件挂载
#[Get('/profile', middleware: [SessionMiddleware::class])]
public function profile(Request $request): Response { ... }
API
SessionManager
| 方法 | 说明 |
|---|---|
set($key, $value) | 写入数据 |
get($key, $default) | 读取数据 |
has($key) | 是否存在 |
forget($key) | 删除 |
flush() | 清空全部 |
flash($key, $value) | 设置闪存 |
getFlash($key) | 读取闪存 |
reflash() | 延长全部闪存 |
keep($keys) | 延长指定闪存 |
token() | 生成 CSRF Token |
verifyToken($token) | 验证 CSRF Token |
regenerate($destroy) | 重新生成 Session ID |
测试
composer install
./vendor/bin/phpunit
License
MIT