向 Laravel 路由添加多个中间件

2022-08-30 09:50:36

根据 laravel 文档,我可以按如下方式添加中间件: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
});

我怎样才能同时做到这两点?

PS.任何评论,提供关于底层四行代码正在做什么的见解,将不胜感激。


答案 1

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

要同时使用两者(单个中间件和中间件组),您可以尝试以下操作:

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

答案 2

您还可以为路由分配多个中间件:

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

参考


推荐