Laravel中间件。最有效的方法

5

目前我正在处理一个 Laravel 5 项目,其中包含约100个POST和GET路由。我尝试在这里添加中间件,但是该项目背后的逻辑非常复杂。中间件在此处将扮演非常重要的角色。以前,我使用分组,例如:

Route::group(['middleware' => 'auth'], function(){
      //routes
});

但是自从我不得不在群组中创建群组之后,一切变得非常混乱,例如:

 Route::group(['middleware' => 'auth'], function(){
          Route::group(['middleware' => 'status'], function(){
               //routes
          });
    });

目前我有20个控制器,每个控制器包含大约5个路由。你能否建议一种在大型项目中更有效使用中间件的方法?你通常使用什么方式?提前感谢!

1个回答

2

这完全取决于您需要应用于不同路由的中间件。

如果您有一组共享相同中间件集的路由,则最简单的方法是在第一个示例中所做的:

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,但这取决于你有哪些路由和中间件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接