romanzipp/laravel-blockade

Laravel Blockade 包

1.3.1 2023-02-15 12:38 UTC

This package is auto-updated.

Last update: 2024-09-15 16:16:23 UTC


README

Latest Stable Version Total Downloads License GitHub Build Status

这是一个简单但高度可定制的包,用于阻止访问私有或WIP Laravel项目。

特性

  • 对私有项目或页面的便捷访问控制
  • 简单、美观且完全可定制的错误页面
  • 可替换的认证过程和令牌存储

为什么不用Laravel维护模式呢?

Blockade提供了一种简单的方法,通过输入密码来仅共享开发或测试环境访问权限。认证用户在成功登录后,将返回目标URL。内置的Laravel维护模式则通过在部署或维护过程中拒绝访问来采用不同的方法。

我们还需要另一个访问控制包吗?

是的!根据我的经验,其他维护模式包(和类似产品)只依赖于一种认证方法,即基于cookie或会话的方法。当在多个具有不同技术栈的项目上工作时,某些驱动程序(例如仅API项目的会话存储)根本不可用。Blockade旨在通过在一个包中结合几种认证机制来解决这个问题。

安装

composer require romanzipp/laravel-blockade

配置

将配置和资源文件复制到项目文件夹

php artisan blockade:install

您还可以发布视图(--views)和语言文件(--lang),以进一步自定义Blockade模板。

如果看到底部有错误消息,请使用--update参数。

使用方法

要启用Blockade,只需

  1. 设置环境变量 BLOCKADE_ENABLED=true & BLOCKADE_PASSWORD=
  2. 在您的中间件堆栈中注册BlockadeMiddleware类。
namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;
use romanzipp\Blockade\Http\Middleware\BlockadeMiddleware;

class Kernel extends HttpKernel
{
    // Globally for all routes

    protected $middleware = [
        // ...
        BlockadeMiddleware::class,
    ];

    // In a single middleware group

    protected $middlewareGroups = [
        'web' => [
            // ...
            BlockadeMiddleware::class,
        ]
    ];

    // As named middleware, applied in your routes file

    protected $routeMiddleware = [
        // ...
        'blockade' => BlockadeMiddleware::class,
    ];
}

该包默认使用提供的视图进行密码提示,并在cookie中存储认证哈希。

要重置之前的授权访问,只需更改BLOCKADE_PASSWORD条目。所有颁发的访问令牌将在下一次页面请求时无效。

处理器

处理器负责验证认证请求并发送成功或失败响应。您可以在blockade.handler中设置活动处理器,并通过blockade.handlers.*配置条目单独自定义每个处理器。

存储

存储负责存储(当然)用于后续请求的认证状态。您可以在blockade.store中设置活动存储,并通过blockade.stores.*配置条目单独自定义每个存储。

重要:如果您正在使用SessionStore,请确保将BlockadeMiddleware附加到Illuminate\Session\Middleware\StartSession中间件之后。

扩展

您可以通过实现处理器和存储的接口来创建自己的认证过程:

资源

建议通过顶部列出的 vendor:publish 命令发布提供的 css 文件。如果捆绑的资产文件不可用,我们将使用从 unkpg.com 的回退,并在页脚区域显示错误通知。

使用 --update 参数来更新已发布的资产。

php artisan blockade:install --update

免责声明

这不是加密安全的身份验证

该包将身份验证令牌存储为配置密码的 SHA 256 哈希。

测试

./vendor/bin/phpunit

构建前端

开发

yarn dev

生产

yarn prod

致谢

特别感谢 Katerina Limpitsouni 提供了出色的 unDraw SVG 插图!