marshmallow / ip-access
Marshmallow - Laravel IP 访问
Requires
- php: ^8.0
- illuminate/contracts: ^8.0|^9.0|^10.0|^11.0
- laravel/nova: ^4.0
- marshmallow/commands: ^1.2
- marshmallow/helpers: ^2.0
Requires (Dev)
- orchestra/testbench: ^6.0|^7.0|^8.0
- phpunit/phpunit: ^9.3
This package is auto-updated.
Last update: 2024-09-10 09:12:04 UTC
README
这是一个IPv4 & IPv6的IP访问重定向包。其目的是允许或拒绝通过IP地址访问Laravel路由。它能够允许某些IP(IPv4或IPv6)访问默认文件或环境,并将未授权的IP或用户重定向到外部URL,同时让白名单IP有权访问整个网站或特殊环境。
安装
您可以通过composer安装此包
composer require marshmallow/ip-access
并发布服务提供者(以及配置)
php artisan vendor:publish --provider="Marshmallow\IpAccess\IpAccessServiceProvider"
这是已发布配置文件的内容
return [ 'enabled' => env('IPACCESS_ENABLED', true), 'whitelist_env' => env('IPACCESS_ENV', 'production'), 'whitelist' => [ 'range' => [ '127.0.0.*', ], 'list' => [ '127.0.0.1', ] ], 'redirect_to' => env('IPACCESS_DENIED_URL', null), 'response_status' => env('IPACCESS_DENIED_STATUS', 403), 'response_message' => env('IPACCESS_DENIED_MESSAGE', 'Access not Allowed'), ];
可选
以下是一些可选的.env变量设置
# ENABLED
IPACCESS_ENABLED=true
# ENV THAT IS CHECKED BY IP e.g. staging
IPACCESS_ENV=production
# ADDIOTNAL IP LIST
IPACCESS_WHITELIST="127.0.0.1,123.456.789.12" # SEPERATED BY ,
# URL TO REDIRECT TO:
IPACCESS_DENIED_URL="https://marshmallow.dev"
# IF URL NOT SET
IPACCESS_DENIED_STATUS=403 # REDIRECT STATUS
IPACCESS_DENIED_MESSAGE="Not allowed" # REDIRECT STATUS MESSAGE
禁用对路由和webhook的锁定
如果您正在测试被锁定的环境的webhook,您需要打开您的应用程序,以便webhook不会被阻止。您可以通过在配置数组的except
中添加值来实现。以下是一些示例。
只打开一个路由
将URL添加到数组中,以打开它。如果此路由匹配,则包将允许请求通过。
'except' => [ 'webhook/*', ],
通过密钥打开
如果您想打开路由但需要请求有密钥,可以通过向except数组添加一些设置来实现。
通过头部信息
'except' => [ 'webhook/*' => [ 'secret' => [ 'source' => 'header', 'key' => 'x-webhook-secret', 'value' => 'TEST_SECRET_HEADER', ], ], ], /** This request will be allowed by the config above. */ Http::withHeaders([ "x-webhook-secret" => "TEST_SECRET_HEADER" ])->get("https://marshmallow.dev/webhook/is/open");
通过正文/查询字符串
'except' => [ 'webhook/*' => [ 'secret' => [ 'source' => 'body', 'key' => 'secret', 'value' => 'TEST_SECRET_BODY', ], ], ], /** These requests will be allowed by the config above. */ Http::get("https://marshmallow.dev/webhook/is/open?secret=TEST_SECRET_BODY"); Http::get("https://marshmallow.dev/webhook/is/open", [ "secret" => "TEST_SECRET_BODY" ]); Http::post("https://marshmallow.dev/webhook/is/open", [ "secret" => "TEST_SECRET_BODY" ]);
与Laravel Nova一起使用
如果您想使用Laravel Nova跟踪有权访问的IP地址,您需要按照以下步骤操作。
在NovaServiceProvider中添加对IP访问的检查
Gate::define('viewNova', function ($user) { return IpAccess::hasBackofficeAccess(); }
更新您的配置文件
在config/ip-access.php
中将use_nova
设置为true。
return [ 'use_nova' => true, ];
运行迁移
您需要在更新配置文件后运行迁移,以便我们有存储IP地址所需的表。
php artisan migrate
发布Nova资源
最后一步是发布Nova资源,以便您可以在Laravel Nova安装中管理所有IP地址。
php artisan marshmallow:resource IpAccess IpAccess
卸载
一旦您的应用程序完成,并且您要将应用程序发布到生产环境供全世界查看,您就可以删除此包。您不再需要它,而且保持代码整洁总是好的做法。运行以下命令来卸载此包。此命令将删除config
文件。删除nova resource
、删除migration
记录、删除ip_accesss
数据库表,并从您的composer
文件中删除包。您将需要自行审查并提交您在GIT仓库中的更改。
php artisan ip-access:uninstall
更新日志
有关最近更改的更多信息,请参阅更新日志。
贡献
有关详细信息,请参阅贡献指南。
安全漏洞
有关如何报告安全漏洞的更多信息,请参阅我们的安全策略。
鸣谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。