adaptivemedia / laravel-site-lock
锁定网站访问
2.2.0
2024-09-03 08:06 UTC
Requires
- php: ^8.0
- illuminate/support: >9.0
Requires (Dev)
- mockery/mockery: ^1.0
- orchestra/testbench: >6.0
- phpunit/phpunit: >9.0
README
有时您不希望任何人访问您的网站。使用场景包括
- 网站处于开发中
- 网站在预发布/测试服务器上
- 网站是内部工具
此包添加了一个全局Web中间件,可以保护所有路由直到解锁。
安装
您可以通过composer安装此包
composer require adaptivemedia/laravel-site-lock
您必须使用以下命令发布配置文件
php artisan vendor:publish --provider="Adaptivemedia\SiteLock\SiteLockServiceProvider" --tag="config"
这是配置文件的内容
<?php return [ /* * This is the master switch to enable site lock. */ 'enabled' => env('SITE_LOCK_ENABLED', true), /* * Environments that the site lock should be applied to. */ 'environments' => ['staging', 'development'], /* * The following IP's will automatically gain access to the * app without having to visit the `access-url` url. */ 'allowed-ips' => [], /* * List of urls that are whitelisted. * * Examples: * /a-webhook-url * a-webhook-url * api/a-webhook-url * api/a-webhook-* */ 'whitelisted-urls' => [], /* * The url that will unlock the site. */ 'access-url' => '/change-this-url-to-your-own', /* * After having gained access, visitors will be redirected to this url. */ 'redirect-url' => '/', /* * The session key that holds the site lock. */ 'session-key' => 'site-lock', /* * Error message displayed for users without access. */ 'error-message' => 'Access denied', /* * HTTP response for users without access. */ 'error-http-response' => 401, ];
用法
将中间件添加到App\Http\Kernel.php
中的$middlewareGroups
数组中
protected $middlewareGroups = [
'web' => [
...
\Adaptivemedia\SiteLock\SiteLock::class,
...
]
]
添加后,如果请求在匹配的环境中,所有路由都会被锁定。您也可以通过向$routeMiddleware
变量添加别名并将该别名附加到路由来将此中间件分配给特定路由。
通过URL获取访问权限
现在,您可以通过访问配置的URL来获取对网站的访问权限。
通过IP获取访问权限
您可以在allowed-ips
配置变量中添加允许的IP地址。您可以使用逗号分隔的字符串
'allowed-ips' => '127.0.0.1,192.168.0.1'
或使用数组
'allowed-ips' => [
'127.0.0.1',
'192.168.0.1'
]
要更改允许的IP地址而不更改代码,您可以使用自己的env
变量,例如SITE_LOCK_ALLOWED_IPS
'allowed-ips' => env('SITE_LOCK_ALLOWED_IPS')
并在您的.env
文件中设置它们
SITE_LOCK_ALLOWED_IPS="127.0.0.1, 192.168.0.1"
白名单URL
您可以白名单单个URL,这样它们就会被排除在中间件之外。一个常见的用例是第三方服务在您的应用程序中调用的钩子URL。
'whitelisted-urls' => [
'/webhook-callback-url',
],
禁用网站锁定
如果您不想启用网站锁定,只需将环境变量SITE_LOCK_ENABLED
设置为false即可。
测试
composer test
变更日志
有关最近更改的更多信息,请参阅变更日志
贡献
有关详细信息,请参阅贡献指南
安全性
如果您发现任何与安全相关的问题,请通过info@adaptivemedia.se发送电子邮件,而不是使用问题跟踪器。
致谢
支持我们
Adaptivemedia是一家位于瑞典斯德哥尔摩的网络代理公司。访问我们的网站。
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件