我看过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');
});