laravel 中间件。最有效的方法
laravel middleware. Most efficient way
目前我正在使用 laravel 5 项目,其中包含 ~100 post 和获取路线。我想在这里添加中间件,但这个项目背后的逻辑真的很复杂。中间件将在这里扮演非常重要的角色。在我使用群组之前,例如:
Route::group(['middleware' => 'auth'], function(){
//routes
});
但是一切都变得非常混乱,因为我不得不在组中创建组,例如:
Route::group(['middleware' => 'auth'], function(){
Route::group(['middleware' => 'status'], function(){
//routes
});
});
目前我有20个控制器,所以每个控制器包含大约5条路线。你能建议我在大项目中使用中间件的更有效方法吗?你用什么方法?提前致谢!
这完全取决于您需要将哪些中间件应用于不同的路由。
如果您有多组路由共享同一个中间件集,那么最简单的方法就是您在第一个示例中所做的:
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, 但这完全取决于你有什么路由和中间件。
目前我正在使用 laravel 5 项目,其中包含 ~100 post 和获取路线。我想在这里添加中间件,但这个项目背后的逻辑真的很复杂。中间件将在这里扮演非常重要的角色。在我使用群组之前,例如:
Route::group(['middleware' => 'auth'], function(){
//routes
});
但是一切都变得非常混乱,因为我不得不在组中创建组,例如:
Route::group(['middleware' => 'auth'], function(){
Route::group(['middleware' => 'status'], function(){
//routes
});
});
目前我有20个控制器,所以每个控制器包含大约5条路线。你能建议我在大项目中使用中间件的更有效方法吗?你用什么方法?提前致谢!
这完全取决于您需要将哪些中间件应用于不同的路由。
如果您有多组路由共享同一个中间件集,那么最简单的方法就是您在第一个示例中所做的:
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, 但这完全取决于你有什么路由和中间件。