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

时间:2016-11-26 20:36:16

标签: php laravel

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

我怎么能两个都做?

PS。任何提供有关底部四行代码正在做什么的见解的评论都将受到赞赏

5 个答案:

答案 0 :(得分:35)

要将中间件分配给路径,您可以使用单个中间件(第一个代码段)或中间件组(第二个代码段)。使用中间件组,您可以同时为路径分配多个中间件。您可以找到有关中间件组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
});

答案 1 :(得分:1)

您还可以将多个中间件分配给该路由:

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

Reference

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

Route::middleware(['auth:api'])->middleware(['second:middleware'])
    ->prefix('yourPrefix')->group(function () {
        //Add your routes here
});

答案 4 :(得分:-2)

尝试一下

public MainPage()
{
    NavigationPage.SetHasNavigationBar(this, false);
    InitializeComponent();
    ......
}