在Laravel的一个地方为多个路由设置中间件?

时间:2019-04-03 22:36:21

标签: laravel

我看过Laravel代码,他们的文档建议在相应的控制器中设置中间件,但是在多条路径上设置中间件什么也没说?

按照他们的描述来做似乎是一种非常糟糕的方法,是否有更好的方法可以将它从一个部分添加到许多路线中?或至少在web.php中定义了中间件,但更喜欢前者。

此刻我必须在控制器中进行设置

2 个答案:

答案 0 :(得分:2)

您可以创建一个组并将所有路由放入该组,也可以在web.php中分配中间件的位置分配中间件,我会为多个路由选择后者。

只要您的路由在组内,它们都应遵循该组的规则,即您在声明组时设置的中间件。

您可以将其添加到web.php中的特定路由:

Route::get('/', 'LandingController@index')->middleware('guest');

或者您可以将多个路由组合到一个中间件:

Route:group(['middleware' => 'guest'], function() {
    Route::get('/', 'LandingController@index');
    Route::get('/welcome', 'WelcomeController@index');
    Route::post('/welcome', 'WelcomeController@index');
});

您还可以在组中分配多个mws:

Route:group(['middleware' => ['mw1', 'mw2', 'mw3']], function() {
    Route::get('/', 'LandingController@index');
    Route::get('/welcome', 'WelcomeController@index');
    Route::post('/welcome', 'WelcomeController@index');
});

答案 1 :(得分:0)

您可以使用Route :: group并在那里设置中间件

Route:group(['middleware' => 'auth:web'], function() {

    $this->get('/', 'HomeController@index');
    $this->get('/posts', 'PostController@index');

});