## `Session` 组件 Session(会话)组件可以让你保持一个用户的 "状态" ,并跟踪他在浏览你的网站时的活动。 | 类 | 调用 | | --- | --- | --- | | mix\http\Session | | 门面类 | 调用 | | --- | --- | | mix\facades\Session | Session:: | >[danger] Session 组件暂时只支持 Redis,使用前需先安装 Redis 数据库。 ## 组件配置 App配置文件中,该组件的默认配置如下: ~~~ // Session 'session' => [ // 类路径 'class' => 'mix\http\Session', // 保存处理者 'saveHandler' => [ // 类路径 'class' => 'mix\client\Redis', // 主机 'host' => '127.0.0.1', // 端口 'port' => 6379, // 数据库 'database' => 0, // 密码 'password' => '', ], // 保存的Key前缀 'saveKeyPrefix' => 'MIXSSID:', // 生存时间 'expires' => 7200, // session名 'name' => 'MIXSSID', ], ~~~ ## 使用范例 用户登陆控制器: ~~~ // 登陆方法 public function actionLogin() { /* 验证账号密码成功后 */ // 保存会话信息 $userinfo = [ 'uid' => 1088, 'openid' => 'yZmFiZDc5MjIzZDMz', 'username' => '小明', ]; Session::set('userinfo', $userinfo); // 响应 return $this->render('login', ['message' => '新增成功']); } ~~~ 效验Session: 需创建一个 BaseController 控制器,然后其他控制器继承该控制器。 ~~~ // BaseController 的初始化事件 public function onInitialize() { parent::onInitialize(); // TODO: Change the autogenerated stub $userinfo = Session::get('userinfo'); if (empty($userinfo)) { app()->response->redirect('/'); app()->response->send(); app()->end(); } } ~~~ ## `set` 方法 变量赋值。 ~~~ Session::set('name', '小华'); ~~~ ## `get` 方法 获取变量的值。 >[info] name不存在时返回null。 ~~~ Session::get('name'); ~~~ ## `has` 方法 判断变量是否存在。 ~~~ Session::has('name'); ~~~ ## `delete` 方法 删除变量。 ~~~ Session::delete('name'); ~~~ ## `clear` 方法 清空全部变量。 ~~~ Session::clear(); ~~~ ## `getSessionId` 方法 获取SessionId。 ~~~ Session::getSessionId(); ~~~