romanzipp / laravel-blockade
Laravel Blockade 包
Requires
- php: ^7.1|^8.0
- ext-json: *
- illuminate/console: ^5.5|^6.0|^7.0|^8.0|^9.0|^10.0
- illuminate/support: ^5.5|^6.0|^7.0|^8.0|^9.0|^10.0
- spatie/url: ^1.3
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- laravel/framework: ^5.5|^6.0|^7.0|^8.0|^9.0|^10.0
- mockery/mockery: ^1.3.2
- orchestra/testbench: >=3.8
- phpstan/phpstan: ^0.12.99|^1.0
- phpunit/phpunit: ^7.0|^8.5.30|^9.0
- romanzipp/php-cs-fixer-config: ^3.0
README
这是一个简单但高度可定制的包,用于阻止访问私有或WIP Laravel项目。
特性
- 对私有项目或页面的便捷访问控制
- 简单、美观且完全可定制的错误页面
- 可替换的认证过程和令牌存储
为什么不用Laravel维护模式呢?
Blockade提供了一种简单的方法,通过输入密码来仅共享开发或测试环境访问权限。认证用户在成功登录后,将返回目标URL。内置的Laravel维护模式则通过在部署或维护过程中拒绝访问来采用不同的方法。
我们还需要另一个访问控制包吗?
是的!根据我的经验,其他维护模式包(和类似产品)只依赖于一种认证方法,即基于cookie或会话的方法。当在多个具有不同技术栈的项目上工作时,某些驱动程序(例如仅API项目的会话存储)根本不可用。Blockade旨在通过在一个包中结合几种认证机制来解决这个问题。
安装
composer require romanzipp/laravel-blockade
配置
将配置和资源文件复制到项目文件夹
php artisan blockade:install
您还可以发布视图(--views
)和语言文件(--lang
),以进一步自定义Blockade模板。
如果看到底部有错误消息,请使用--update
参数。
使用方法
要启用Blockade,只需
- 设置环境变量
BLOCKADE_ENABLED=true
&BLOCKADE_PASSWORD=
- 在您的中间件堆栈中注册
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
中间件之后。
扩展
您可以通过实现处理器和存储的接口来创建自己的认证过程:
romanzipp\Blockade\Handlers\Contracts\HandlerContract
接口用于处理器和romanzipp\Blockade\Stores\Contracts\StoreContract
接口用于存储。
资源
建议通过顶部列出的 vendor:publish
命令发布提供的 css 文件。如果捆绑的资产文件不可用,我们将使用从 unkpg.com 的回退,并在页脚区域显示错误通知。
使用 --update
参数来更新已发布的资产。
php artisan blockade:install --update
免责声明
这不是加密安全的身份验证
该包将身份验证令牌存储为配置密码的 SHA 256 哈希。
测试
./vendor/bin/phpunit
构建前端
开发
yarn dev
生产
yarn prod
致谢
特别感谢 Katerina Limpitsouni 提供了出色的 unDraw SVG 插图!