【问题标题】:laravel middleware. Most efficient waylaravel 中间件。最有效的方式
【发布时间】:2015-07-29 08:59:03
【问题描述】:

目前我正在使用 laravel 5 项目,其中包含约 100 条发布和获取路线。我正在尝试在这里添加中间件,但是这个项目背后的逻辑真的很复杂。中间件将在这里发挥非常重要的作用。在我使用组之前,例如:

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

但是一切都变得非常混乱,因为我必须在组中创建组,例如:

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

目前我有 20 个控制器,所以每个控制器包含大约 5 条路线。您能否建议我在大型项目中使用中间件的更有效方法。你用什么方法?提前致谢!

【问题讨论】:

    标签: php laravel laravel-5 middleware


    【解决方案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,但这一切都取决于你有什么路由和中间件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-21
      • 2012-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-21
      相关资源
      最近更新 更多