【问题标题】:Adding multiple middleware to Laravel route向 Laravel 路由添加多个中间件
【发布时间】:2016-11-26 20:36:15
【问题描述】:

根据laravel doc,我可以添加auth 中间件如下:

Route::group(['middleware' => 'auth'], function () {
    Route::get('/', function ()    {
        // Uses Auth Middleware
    });

    Route::get('user/profile', function () {
        // Uses Auth Middleware
    });
});

我还看到中间件添加如下:

Route::group(['middleware' => ['web']], function() {
  // Uses all Middleware $middlewareGroups['web'] located in /app/Http/kernel.php?
  Route::resource('blog','BlogController'); //Make a CRUD controller
});

我怎样才能做到这两点?

附言。任何提供有关底部四行代码正在做什么的见解的 cmets 将不胜感激

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    要将中间件分配给路由,您可以使用单个中间件(第一个代码 sn-p)或中间件组(第二个代码 sn-p)。使用中间件组,您可以一次将多个中间件分配给一个路由。您可以找到有关中间件组的更多详细信息in the docs

    要同时使用(单个中间件和中间件组),您可以试试这个:

    Route::group(['middleware' => ['auth', 'web']], function() {
      // uses 'auth' middleware plus all middleware from $middlewareGroups['web']
      Route::resource('blog','BlogController'); //Make a CRUD controller
    });
    

    【讨论】:

    • 啊,所以Route::group(['middleware' => ['web']], function() {});Route::group(['middleware' => 'web'], function() {}); 执行相同的功能?
    • 另外,第一个代码 sn-p 没有使用组中间件?该脚本包含Route::group(...);,所以我会申请一个小组。
    • 1.是的 Route::group(['middleware' => ['web']], function() {});Route::group(['middleware' => 'web'], function() {}); 执行相同的操作
    • 2.第一段代码 sn-p 使用 'auth' 中间件,它是 Laravel 内置的中间件,不是组中间件
    • 你在这两种情况下都使用Route::group(...),所以在这两种情况下它都将应用于一个路由组,而不是单个路由
    【解决方案2】:

    你也可以为路由分配多个中间件:

    Route::get('/', function () {
    //
    })->middleware('first', 'second');
    

    Reference

    【讨论】:

      【解决方案3】:

      您还可以使用Route 外观的middleware 静态方法执行以下操作:

      Route::middleware(['middleware1', 'middlware2'])
          ->group(function () {
              // Your defined routes go here
          });
      

      middleware 方法接受一个中间件的单个字符串,或一个字符串数组 一组中间件。

      【讨论】:

        【解决方案4】:
        Route::middleware(['auth:api'])->middleware(['second:middleware'])
            ->prefix('yourPrefix')->group(function () {
                //Add your routes here
        });
        

        【讨论】:

        • 请描述你在做什么并将Laravel 7移出密码框^^
        猜你喜欢
        • 1970-01-01
        • 2021-09-28
        • 2017-05-08
        • 2019-08-02
        • 1970-01-01
        • 2019-09-21
        • 2019-03-10
        • 2017-02-23
        • 1970-01-01
        相关资源
        最近更新 更多