在拉拉维尔的一个位置为多个路由设置中间件



我看过Laravel代码,他们的文档建议在相应的控制器中设置中间件,但没有提到在多个路由上设置它?

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

目前我必须在控制器中设置它

您可以创建一个组并将所有路由放在该组中,也可以将中间件分配给 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');
});

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

Route:group(['middleware' => 'auth:web'], function() {
    $this->get('/', 'HomeController@index');
    $this->get('/posts', 'PostController@index');
});

最新更新