arendach / multisessions
多会话包
1.0.14
2021-04-12 11:36 UTC
Requires
- php: >=7.2
README
安装
安装包
composer require arendach/multisessions
发布包文件
php artisan vendor:publish --tag=multisessions
初始化会话的中间件
// app/Http/Kernel.php -> middlewareGroups['web'] ... \Arendach\MultiSessions\Middleware\MultiSessionsStart::class, ...
如果用户IP地址更改,用于重新加载会话的中间件
与包
arendach/vodafone-msisdn
及/或arendach/vodafone-name
一起使用为了运行,需要在头部传递
X-USER-IP-ADDRESS
并配置cors,向exposed_headers
数组添加头部
// app/Http/Kernel.php -> middlewareGroups['web'] ... \Arendach\MultiSessions\Middleware\RebootPersonificationSession::class, ...
服务提供商
// Додати в app.providers ... \Arendach\MultiSessions\Providers\MultiSessionsServiceProvider::class ...
工作原理
多会话的工作原理基于 laravel 的缓存。对于每个会话,都可以设置自己的存储库(Redis、file、memcached、database)
对于每个单独的会话,设置生命周期(用户最后操作后)。浏览器发送带有唯一会话标识符的cookie,而数据则被记录在缓存中,这些数据具有相同的时间周期。
每次对服务器的请求后,都会更新每个会话的生命周期,从该时刻起加上会话的生命周期。
cookie中传递的标识符使用Laravel的标准cookie加密方法进行加密。
配置
每个会话的配置位于文件 config/multisessions.php
中
return [ 'personification' => [ 'driver' => 'database', 'lifetime' => '20',// minutes ], ];
personification
- 标识符(会话名称)
driver
- 缓存存储
lifetime
- 会话生命周期(分钟)
如何使用
在连接服务提供商时,为每个会话注册singleton
为了获取会话实例,需要调用静态方法
instance
$key = 'personification'; // клюю масива з файла конфігурації $sesion = \Arendach\MultiSessions\Session::instance($key);
Session类中提供了公共方法
// set(string $key, mixed $value): self // метод записує в сховище дані по ключу $session->set('slug-key', 'hello world'); // has(string $key): bool // метод перевіряє наявність даних по ключу в сесії, вертає true навіть якщо значення null $session->has('slug-key'); // true // get(string $key): mixed // метод повертає дані з сесії по ключу або null якщо немає нічого $session->get('slug-key'); // hello world