我看过Laravel代码,他们的文档建议在相应的控制器中设置中间件,但是在多条路径上设置中间件什么也没说?
按照他们的描述来做似乎是一种非常糟糕的方法,是否有更好的方法可以将它从一个部分添加到许多路线中?或至少在web.php中定义了中间件,但更喜欢前者。
此刻我必须在控制器中进行设置
答案 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');
});