mintellity/laravel-tabbed-session

每个浏览器标签页拥有独立的会话。

0.5.0 2024-08-13 09:45 UTC

This package is auto-updated.

Last update: 2024-09-23 08:50:40 UTC


README

使用此包,您可以为每个浏览器标签页创建一个独立的会话。例如,如果您希望每个标签页有不同的租户,这将非常有用。此包利用查询参数来标识标签页,并在默认会话中的数组中存储所有数据。

安装

您可以通过composer安装此包

composer require mintellity/laravel-tabbed-session

将中间件添加到您的 app/Http/Kernel.php 文件中。请注意,中间件必须添加在 StartSession 中间件之后,并且必须添加在所有其他应使用标签页会话的中间件之前

protected $middleware = [
    // ...
    \Mintellity\LaravelTabbedSession\Http\Middleware\TabbedSessionMiddleware::class,
];

将JS脚本添加到例如您的 resources/js/app.js 文件中

require('../../vendor/mintellity/laravel-tabbed-session/resources/js/tabbedSession');

默认查询参数名称为 tabId。您可以通过编辑环境文件并添加以下行来更改此名称。请注意,参数名称必须是唯一的,并且不与路由中的其他参数冲突。如果您更改参数名称,也必须在JS脚本中更改名称

BROWSER_TAB_URL_PARAMETER_NAME=browserTabId
require('../../vendor/mintellity/laravel-tabbed-session/resources/js/tabbedSession')('browserTabId');

用法

要访问标签页会话,您可以使用 browsserTab()->session() 辅助函数

browserTab()->session()->put('foo', 'bar');
browserTab()->session()->get('foo'); // bar

禁用某些路径

您可以为特定路径完全禁用TabbedSession。将路径包含在配置中的 $exclude 中。也可以使用正则表达式匹配路径

return [
    'exclude' => [
        'admin/*', // Will disable middleware for all paths matching this pattern, e.g. admin/user/create
    ]
]

请注意:如果在使用禁用路径时使用 browserTab() 辅助函数,它将抛出异常。

前端 "会话"

这是一个可选功能,允许您在cookie中为每个标签页存储一些数据。cookie也可以从前端访问。

⚠️ 这不是存储数据的安全方式! 数据未加密,并且可以被用户篡改。仅用于非安全相关的数据。

安装

将cookie添加到 App\Http\Middleware\EncryptCookies 中未加密cookie的列表中

$this->disableFor(config('tabbed-session.frontend-cookie-name'));

可以通过编辑环境文件并添加以下行来更改cookie名称

FRONTEND_TAB_SESSION_COOKIE_NAME=frontend_tab_session

并将脚本添加到您的 resources/js/app.js 文件中

require('../../vendor/mintellity/laravel-tabbed-session/resources/js/frontendTabSession')('frontend_tab_session');

用法

在前端使用JS

window.tabSessionStorage.set('foo', 'bar');
window.tabSessionStorage.get('foo'); // bar

从后端

browserTab()->frontendSession()->set('foo', 'bar');
browserTab()->frontendSession()->get('foo'); // bar

查看实现存储和设置活动Bootstrap导航/标签的示例

变更日志

请参阅 CHANGELOG 了解最近的变化信息。

致谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅 许可证文件