divineomega/laravel-route-restrictor
Laravel 中间件,用于通过 HTTP 基本认证限制网站或特定路由
v2.3.1
2019-09-09 15:03 UTC
Requires
- php: >=5.5.9
- laravel/framework: ^5.1|^6.0
README
Laravel Route Restrictor 是一个中间件包,旨在通过 HTTP 基本认证限制整个网站或特定路由。它与 Laravel 5.1 及以上版本兼容。
安装
- 运行
composer require divineomega/laravel-route-restrictor
。 - 将
DivineOmega\LaravelRouteRestrictor\Providers\LaravelRouteRestrictorServiceProvider::class
添加到config/app.php
文件中的$providers
数组。 - 运行
php artisan vendor:publish --provider="DivineOmega\LaravelRouteRestrictor\Providers\LaravelRouteRestrictorServiceProvider"
。 - 将
\DivineOmega\LaravelRouteRestrictor\Http\Middleware\BasicAuthentication::class
添加到app/Http/Kernel.php
文件中的$middleware
数组。 - 将
'routeRestrictor' => \DivineOmega\LaravelRouteRestrictor\Http\Middleware\BasicAuthentication::class
添加到app/Http/Kernel.php
文件中的$routeMiddleware
数组。 - 在
public/.htaccess
文件的RewriteEngine On
下方立即添加RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
。这是针对配置为使用 CGI 作为 PHP 处理器的 Web 服务器所必需的。
全局限制
为了限制 Laravel 应用程序中的所有路由,只需将全局用户名和密码添加到您的 .env
文件中,如下所示。确保您更改了 username
和 password
值。
ROUTE_RESTRICTOR_GLOBAL_USERNAME=username
ROUTE_RESTRICTOR_GLOBAL_PASSWORD=password
您的整个应用程序将受到这些详细信息的保护,除非有特定路由的限制。
或者,您可以在 config/laravel-route-restrictor.php
配置文件中修改全局限制的用户名和密码。
限制特定路由
要限制特定路由,您必须编辑您的路由文件。只需用以下路由组代码包围您想限制的路由或路由即可。确保更改 username
和 password
中间件参数。
Route::group(['middleware' => 'routeRestrictor:username,password'], function () { // Route(s) to restrict go here });
注意:如果您同时具有特定路由限制和全局限制,它们都将生效,但特定路由限制将具有优先级。
从限制中排除特定路由
如果您希望从限制中排除一个或多个路由,您必须编辑您的路由文件。只需用以下路由组代码包围您想排除的路由或路由即可。
Route::group(['middleware' => 'routeRestrictor:disable'], function () { // Route(s) to exclude from restriction go here });