## `Session` 组件 Session(会话)组件可以让你保持一个用户的 "状态" ,并跟踪他在浏览你的网站时的活动。 >[danger] Session 组件暂时只支持 Redis ## 组件 使用 [composer]([https://www.phpcomposer.com/](https://www.phpcomposer.com/)) 安装: ~~~ composer require mix/session ~~~ ## 依赖注入配置 - [manifest/beans/session.php](https://github.com/mix-php/mix-skeleton/blob/master/manifest/beans/session.php) ## 使用范例 需先调用 `start` 才可使用其他方法: ~~~ // 登录效验时,true 可强制生成新的 session_id $session->start($request, $response, true); // 获取数据时 $session->start($request, $response); ~~~ - 用户登陆控制器方法: ~~~ /** * 登陆 * @param ServerRequest $request * @param Response $response * @return Response */ public function login(ServerRequest $request, Response $response) { // 用户登录的逻辑 // ... // 创建session /** @var Session $session */ $session = context()->get('session'); $session->start($request, $response, true); $payload = [ 'uid' => 1088, 'openid' => 'yZmFiZDc5MjIzZDMz', 'username' => '小明', ]; $session->set('payload', $payload); // 响应 $data = [ 'message' => 'Login success!', ]; return ResponseHelper::view($response, 'login.index', $data); } ~~~ - 效验 Session (在中间件中校验): [>> SessionMiddleware::class 源码 <<](https://github.com/mix-php/mix-skeleton/blob/master/app/Web/Middleware/SessionMiddleware.php) ## 全部方法 | 方法 | 描述 | | --- | --- | | start(ServerRequest $request, Response $response, bool $regenerate = false):void | 启动 | | set(string $name, $value) : bool | 赋值 | | get(string $name, $default = null) : mixed | 取值 | | all() : array | 取所有值 | | delete(string $name) : bool | 删除 | | clear() : bool | 清除session | | has(string $name) : bool | 判断是否存在 | | getId() : string | 获取session_id |