divineomega/laravel-route-restrictor

Laravel 中间件,用于通过 HTTP 基本认证限制网站或特定路由

v2.3.1 2019-09-09 15:03 UTC

This package is auto-updated.

Last update: 2024-09-10 01:59:30 UTC


README

Laravel Route Restrictor 是一个中间件包,旨在通过 HTTP 基本认证限制整个网站或特定路由。它与 Laravel 5.1 及以上版本兼容。

安装

  1. 运行 composer require divineomega/laravel-route-restrictor
  2. DivineOmega\LaravelRouteRestrictor\Providers\LaravelRouteRestrictorServiceProvider::class 添加到 config/app.php 文件中的 $providers 数组。
  3. 运行 php artisan vendor:publish --provider="DivineOmega\LaravelRouteRestrictor\Providers\LaravelRouteRestrictorServiceProvider"
  4. \DivineOmega\LaravelRouteRestrictor\Http\Middleware\BasicAuthentication::class 添加到 app/Http/Kernel.php 文件中的 $middleware 数组。
  5. 'routeRestrictor' => \DivineOmega\LaravelRouteRestrictor\Http\Middleware\BasicAuthentication::class 添加到 app/Http/Kernel.php 文件中的 $routeMiddleware 数组。
  6. public/.htaccess 文件的 RewriteEngine On 下方立即添加 RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]。这是针对配置为使用 CGI 作为 PHP 处理器的 Web 服务器所必需的。

全局限制

为了限制 Laravel 应用程序中的所有路由,只需将全局用户名和密码添加到您的 .env 文件中,如下所示。确保您更改了 usernamepassword 值。

ROUTE_RESTRICTOR_GLOBAL_USERNAME=username
ROUTE_RESTRICTOR_GLOBAL_PASSWORD=password

您的整个应用程序将受到这些详细信息的保护,除非有特定路由的限制。

或者,您可以在 config/laravel-route-restrictor.php 配置文件中修改全局限制的用户名和密码。

限制特定路由

要限制特定路由,您必须编辑您的路由文件。只需用以下路由组代码包围您想限制的路由或路由即可。确保更改 usernamepassword 中间件参数。

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
});