Session
最后更新于:2022-04-02 07:06:08
## `Session` 组件
Session(会话)组件可以让你保持一个用户的 "状态" ,并跟踪他在浏览你的网站时的活动。
>[danger] Session 组件暂时只支持 Redis
## 组件
使用 [composer]([https://www.phpcomposer.com/](https://www.phpcomposer.com/)) 安装:
~~~
composer require mix/session
~~~
## 依赖注入配置
- [beans/session.php](https://github.com/mix-php/mix-skeleton/tree/v2.1/manifest/beans/session.php)
## 使用范例
- 用户登陆控制器方法:
~~~
/**
* 登陆
* @param ServerRequest $request
* @param Response $response
* @return Response
*/
public function login(ServerRequest $request, Response $response)
{
/* 验证账号密码成功后 */
// 创建session
/** @var Session $session */
$session = context()->getBean('session', [
'request' => $request,
'response' => $response,
]);
$session->createId();
$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/tree/v2.1/app/Web/Middleware/SessionMiddleware.php)
## 全部方法
| 方法 | 描述 |
| --- | --- |
| createId() : string | 创建session_id |
| set(string $name, $value) : bool | 赋值 |
| get(string $name, $default = null) : mixed | 取值 |
| getAttributes() : array | 取所有值 |
| delete(string $name) : bool | 删除 |
| clear() : bool | 清除session |
| has(string $name) : bool | 判断是否存在 |
| getId() : string | 获取session_id |
';