petercoles / live-or-let-die

同步 Laravel 会话管理与前端

1.3.1 2017-04-28 09:10 UTC

This package is auto-updated.

Last update: 2024-09-17 18:53:37 UTC


README

SensioLabsInsight Scrutinizer Code Quality Code Coverage Build Status License

简介

随着我们构建的网站具有越来越多在用户浏览器中直接执行和管理的功能,浏览器和服务器之间的连接变得越来越紧张。当我们的用户在浏览器中努力工作时,我们冒着服务器端 Laravel 应用程序悄然终止相关会话、注销用户并导致由 Ajax 驱动的操作意外失败,以难以解释和理解的方式给用户带来麻烦的风险。

解决这个问题的方法之一是延长会话。但是,即使忽略这一做法的安全影响,它仅仅减轻了问题;并没有解决问题。

此包通过注入三个路由扩展 Laravel,这些路由可以被前端应用程序用于处理远程 Laravel 会话。它们可以用来查看认证会话还将持续多长时间,并可以根据浏览器端可能未被发现的服务器操作来延长或结束会话。

安装

在命令行中运行

composer require petercoles/live-or-let-die

然后将服务提供程序添加到 config/app.php 文件中的 providers 条目

    'providers' => [
        // ...
        PeterColes\LiveOrLetDie\Providers\LiveOrLetDieServiceProvider::class,
        // ...
    ],

中间件 "\PeterColes\LiveOrLetDie\Middleware\SessionTimeout::class" 将自动添加到 web 路由组,并应用于其包含的所有路由。如果您为 Ajax 请求使用不同的组,则可以在 app/Http/Kernal.php 文件中添加到该组,或者在任何您定义的地方。例如

    protected $middlewareGroups = [
        'myMiddleware' => [
            ...
            \PeterColes\LiveOrLetDie\Middleware\SessionTimeout::class,
        ],
    ];

然而,这个中间件不应该包含在无状态请求中,例如 API 调用。

配置

如果,并且仅当您的认证路由的名称不是 'login'、'register' 和 'logout' 时,才发布配置文件并将您的路由放在那里。发布是通过在终端中执行以下 artisan 命令完成的。

php artisan vendor:publish --provider="PeterColes\LiveOrLetDie\Providers\LiveOrLetDieServiceProvider"

用法

此包提供了三个专为 Ajax 调用设计的路由,以使前端应用程序能够与远程 Laravel 会话协同工作

  • session/remaining 返回当前会话剩余的秒数,而不影响剩余时间
  • session/ping 可以用于在可能不会通知远程服务器的操作中延长会话长度,例如点击由 JavaScript 管理的标签页
  • session/end 允许前端请求终止远程会话。

这些路由将自动注入 - 您无需将它们添加到路由文件中。

问题

此包是为了满足特定需求而开发的,然后为了更广泛的使用而进行了通用化。如果您有目前尚未满足的使用案例,或者发现某些东西似乎没有正确工作,请在 github 仓库 中提出问题。

安全漏洞

如果您在此包中发现安全漏洞,请发送电子邮件至 peterdcoles@gmail.com。我非常重视安全问题,并将迅速解决任何安全漏洞。

许可证

此包根据 MIT 许可证 许可。