没有区别。 Laravel是允许您以多种方式完成许多任务的框架。
我更愿意加入路由过滤器对它们进行分组,例如:
// logged users paths
Route::group(
['before' => 'auth'],
function() {
Route::get('/dashboard', [
'as' => 'dashboard',
'uses' => '[email protected]'
]);
}
);
// paths only for admin
Route::group(
['before' => 'admin'],
function() {
Route::get('/admin',
['as' => 'admin_dashboard',
'uses' => '[email protected]'
]);
Route::get('/categories/{page?}',
['as' => 'categories',
'uses' => '[email protected]'
])->where('page', '[1-9]+[0-9]*');
}
);
有这样使用的一个好处 - 它更容易看,如果所有航线都有正确的过滤器。
假设您只想为登录用户显示一些内容,并且需要使用auth过滤器。您有许多控制器为登录用户显示内容。
如果直接在这些控制器或父控制器构造函数中使用beforeFilter
下面的事情都可能发生:
- 你可能会忘记把beforeFilter在所有的控制器构造
- 你可以在你的控制器构造忘记运行父构造函数(你有beforeFilter的地方)
- 你可以不扩展你想要的类(例如,你扩展BaseController,并且在AuthController中定义了beforeFilter,并且在一个或某些类中扩展了BaseController)
这些情况可能会导致您显示未登录用户的内容,因为您需要记住有关auth在每个控制器中对其进行过滤的情况,并且如果要确保自己做的都正确,则需要查看所有控制器的代码。
使用路由分组(如上所示),您可以轻松查看一个文件(当然假设您使用一个文件进行路由),您将看到哪些路由使用auth
过滤器,哪些不使用。
当然,我认为很多人会对此事有自己的看法,但这是我个人偏好在路线中使用过滤器。