codezero / laravel-stagefront
快速为预演网站添加密码保护。
Requires
- php: ^7.1|^8.0
- codezero/dotenv-updater: ^1.1|^2.0
- illuminate/support: ^5.7|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- orchestra/testbench: ^3.7|^4.0|^5.0|^6.0|^7.0|^8.0|^9.0
- phpunit/phpunit: ^7.0|^8.0|^9.0|^10.0
README
快速为预演网站添加密码保护。
通常,为了保护预演或演示网站不受公众访问,需要在实际项目之外设置单独的认证。这并不总是容易,至少有点麻烦。
其实不必这样!
通过使用Composer安装StageFront,添加中间件并在您的.env
文件中设置3个变量,您就可以开始了。正如您下面将发现的,您还有更多选项可供选择。
✅ 要求
- PHP ^7.1 | ^8.0
- Laravel >= 5.7
📦 安装
☑️ 通过Composer要求包
composer require codezero/laravel-stagefront
Laravel将自动注册ServiceProvider和路由。
当StageFront被禁用时,其路由将不会注册。
☑️ 安装中间件
要激活中间件,将其添加到app/Http/Kernel.php
中的web
中间件组,紧随StartSession
中间件之后
protected $middlewareGroups = [ 'web' => [ \Illuminate\Session\Middleware\StartSession::class, // <= after this \CodeZero\StageFront\Middleware\RedirectIfStageFrontIsEnabled::class, //... ], ];
在Laravel 6+中,您需要将中间件添加到app/Http/Kernel.php
中的$middlewarePriority
数组,紧随StartSession
中间件之后。
protected $middlewarePriority = [ \Illuminate\Session\Middleware\StartSession::class, // <= after this \CodeZero\StageFront\Middleware\RedirectIfStageFrontIsEnabled::class, //... ];
现在您只需要设置一些.env
变量,然后您就可以开始了!
⌨️ 快速设置
在您的.env
文件中设置一些选项或发布配置文件。
查看示例.env文件。
启用StageFront并选择登录名和密码
默认情况下,StageFront被禁用,当启用时使用纯文本密码。如果您将STAGEFRONT_ENCRYPTED
设置为true
,则密码应为哈希值。您可以使用Laravel的\Hash::make('your password')
函数生成此值。
快速设置的艺术家命令
您还可以使用我们的artisan
命令更新.env
文件中的凭据
php artisan stagefront:credentials <username> <password> --encrypt
如果您没有输入用户名或密码,命令将逐步提示您输入
php artisan stagefront:credentials
接下来,您可以选择启用或禁用StageFront
php artisan stagefront:enable php artisan stagefront:disable
👥 数据库登录
如果您在数据库中已有现有用户并想使用这些凭据,可以将STAGEFRONT_DATABASE
设置为true
。上面的登录和密码设置将不予考虑。
如果您只想授予少数用户的访问权限,您可以通过将STAGEFRONT_DATABASE_WHITELIST
设置为逗号分隔的字符串来将他们列入白名单:'john@doe.io,jane@doe.io'
。在配置文件本身中,您也可以使用电子邮件地址的数组。
默认情况下,使用users
表和email
和password
字段名称。但您可以更改此设置,如果您正在使用其他表或字段。
🔖 IP白名单
您可以将IP的逗号分隔列表添加到白名单中,以便这些用户更容易或独家访问您的预演网站。例如:'1.2.3.4,1.2.3.4'
。在配置文件本身中,您也可以使用IP的数组。
当你将IP地址添加到白名单时,默认行为是这些用户将立即获得对网站的访问权限,而其他IP地址的用户将看到正常的登录表单。
要仅允许白名单中的IP地址访问您的网站,请将STAGEFRONT_IP_WHITELIST_ONLY
设置为true
。来自其他IP地址的用户现在将收到403 - 禁止访问
错误。
为了提高安全性,您还可能需要要求白名单中的IP地址通过登录表单。将STAGEFRONT_IP_WHITELIST_REQUIRE_LOGIN
设置为true
以设置此选项。
⚙️ 其他选项
☑️ 更改路由URL
默认情况下,将注册一个带有/stagefront
URL的GET
和POST
路由。
您可以通过设置此选项来更改URL
它运行在web
中间件下,因为它使用会话来保持您登录状态。
如果需要,您可以在配置文件中更改中间件。
☑️ 限制登录尝试次数
为了防止恶意用户尝试破解密码,除非您禁用此功能,否则将限制登录尝试次数。您可以更改每分钟允许的失败尝试次数以及用户在达到最大失败尝试次数后必须等待的延迟(分钟)。
当您尝试登录次数过多时,Laravel的429错误页面将被显示。您可以通过在resources/views/errors
中创建一个429.blade.php
视图来轻松修改它。为了节省您一些时间,我已包括可以在该页面上包含的本地化模板。
@include('stagefront::429')
如果您想在其他受限制的页面上包含不同的部分,您可以检查请求
@if (request()->is(config('stagefront.url'))) @include('stagefront::429') @else @include('your.partial.view') @endif
此视图中的文本可以通过翻译文件进行更改。
☑️ 忽略URL
如果您出于任何原因希望在特定路由上禁用StageFront,您可以将这些添加到配置文件中的ignore_urls
数组中。如果需要,您可以使用通配符。您不能在.env
文件中设置此选项。
例如
'ignore_urls' => [ // ignores /john, but noting under /john '/john', // ignores everyting under /jane, but not /jane itself '/jane/*', ],
☑️ 忽略域名
如果您出于任何原因希望在特定域名上禁用StageFront,您可以将这些添加到配置文件中的ignore_udomains
数组中。您不能在.env
文件中设置此选项。
例如
'ignore_domains' => [ 'admin.domain.com', ],
☑️ 链接实时网站
如果您将URL设置为您的实时网站,登录表单下方将显示一个链接。
请确保您输入完整的URL,包括https://
。
☑️ 更改应用名称
默认情况下,在config/app.php
中配置的应用名称将作为标题显示在登录和限制页面上。您可以通过设置此选项使用不同的标题
📇 发布配置文件
您还可以发布配置文件。
php artisan vendor:publish --provider="CodeZero\StageFront\StageFrontServiceProvider" --tag="config"
每个选项都有文档说明。
📑 翻译和视图
您可以将翻译发布出来,以快速调整登录屏幕和错误信息中的文本。
php artisan vendor:publish --provider="CodeZero\StageFront\StageFrontServiceProvider" --tag="lang"
如果您想完全自定义登录页面,您还可以发布视图。
php artisan vendor:publish --provider="CodeZero\StageFront\StageFrontServiceProvider" --tag="views"
始终欢迎额外的翻译。 :)
📏 Laravel Debugbar
如果您在项目中使用Laravel Debugbar,它将在StageFront路由上自动禁用。这将隐藏任何潜在敏感数据,以防万一Debugbar在您的预发布网站上运行。您可以通过编辑配置文件中的middleware
选项来禁用此功能。
🚧 测试
composer test
☕️ 致谢
🔓 安全性
如果您发现任何安全问题,请通过电子邮件联系我,而不是使用问题跟踪器。
📑 更新日志
关于此包的所有重要更改的完整列表可以在发布页面找到。
📜 许可证
MIT 许可证(MIT)。更多信息请参阅许可证文件。