adaptivemedia / laravel-site-lock

锁定网站访问

2.2.0 2024-09-03 08:06 UTC

This package is auto-updated.

Last update: 2024-09-03 08:07:18 UTC


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)。有关更多信息,请参阅许可证文件