目前我正在使用laravel 5项目,其中包含约100个帖子和获取路线。我正在尝试在这里添加中间件,但这个项目背后的逻辑非常复杂。中间件在这里将发挥重要作用。在我使用组之前,例如:
Route::group(['middleware' => 'auth'], function(){
//routes
});
但是因为我必须在小组中创建小组,所以一切都变得非常混乱,例如:
Route::group(['middleware' => 'auth'], function(){
Route::group(['middleware' => 'status'], function(){
//routes
});
});
目前我有20个控制器,所以每个控制器包含大约5个路由器。你能否建议我在大项目中使用中间件更有效率的方法。你用什么方式?提前谢谢!
答案 0 :(得分:1)
这完全取决于您需要将哪些中间件应用于不同的路由。
如果您拥有共享相同中间件集的路由组,那么最简单的方法是在第一个示例中执行的操作:
Route::group(['middleware' => 'auth'], function(){
//routes
});
如果您有一些共享公共中间件的根,但每个中间件都可能应用了一些特定的中间件,那么在第二个示例中使用现有组嵌套路由和路由组是一种方法:
Route::group(['middleware' => 'auth'], function(){
Route::group(['middleware' => 'status'], function(){
//routes
});
Route::get('/uri/', ['middleware' => 'some_other_middleware']);
});
最后,当不同的路由具有不同的中间件集并且您无法以任何方式对它们进行分组时,您需要为每个路由应用一组中间件:
Route::get('/uri1/', ['middleware' => 'some_middleware']);
Route::get('/uri2/', ['middleware' => 'some_other_middleware']);
长话短说 - 如果您对要应用于哪些路由的中间件有复杂的规则,那么在 routes.php 文件中设置它将反映出复杂性。
您在中间件中执行的某些操作应该属于应用程序中的某个其他层并且移动逻辑可能会简化 routes.php ,但这一切都取决于你有什么路线和中间件。