arendach/multisessions

多会话包

1.0.14 2021-04-12 11:36 UTC

This package is auto-updated.

Last update: 2024-09-12 19:02:05 UTC


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