将多个中间件添加到Laravel路由

use*_*531 29 php laravel

每个laravel doc,我可以添加auth中间件如下:

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

    Route::get('user/profile', function () {
        // Uses Auth Middleware
    });
});
Run Code Online (Sandbox Code Playgroud)

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

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

我怎么能两个都做?

PS.任何有关底部四行代码正在做什么的见解的评论将不胜感激

krl*_*rlv 46

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

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

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

  • 1.是`Route :: group(['middleware'=> ['web']],function(){});`和`Route :: group(['middleware'=>'web'],function( ){});`执行相同的操作 (3认同)

Ana*_*n K 23

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

Route::get('/', function () {
//
})->middleware('first', 'second');
Run Code Online (Sandbox Code Playgroud)

参考


Ahm*_*eri 6

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

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

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