【问题标题】:Laravel Middleware: Where should you put it as a best practice?Laravel 中间件:你应该把它放在哪里作为最佳实践?
【发布时间】:2019-01-20 05:48:26
【问题描述】:

我正在阅读有关中间件的 Laravel 文档,在某个时候它说:“it would be more convenient to specify middleware within your controller's constructor.

我总是将中间件分配给路由文件中的路由,因为这样更容易理解受中间件影响的功能。

我想知道文档说将中间件分配直接放在控制器构造函数中是否有特定原因,或者这只是一个偏好问题。

【问题讨论】:

    标签: laravel


    【解决方案1】:

    这一切都取决于你自己的选择。

    我总是喜欢在路由中作为一个组使用中间件,这样可以使事情保持集中并且我可以很容易地找到它们。

    Route::group(['middleware' => ['middleware1']], function () {
        // your routes under middleware1
    });
    
    Route::group(['middleware' => ['middleware2']], function () {
        // your routes under middleware2
    });
    

    【讨论】:

      【解决方案2】:

      我认为这是一个偏好问题,我喜欢将中间件分配给路由,因此我不必排除控制器中的某些方法,而且只需查看路由就更容易知道哪些路由使用中间件文件。

      【讨论】:

        【解决方案3】:

        在控制器的构造函数中指定中间件更方便。

        这只是意味着如果您在控制器的构造函数中使用每个方法,您可以更好地控制它,以便您可以在方法级别指定某些规则。

        但是当你分配给路由时,你只能控制路由规则。

        【讨论】:

          【解决方案4】:

          感谢您提出问题,如前所述,在大多数情况下,这是由与您合作的团队做出的决定。 以我个人的经验,我只能向你解释为什么我们选择在路由文件中使用中间件定义而不是控制器。

          1. 在大型应用程序中,有十几个控制器的情况很多。 话虽如此,在某些情况下您必须更改某些中间件名称。如果你在路由组上定义它,你只需要改变一行代码,但如果你在构造函数中定义它,你就必须去每个控制器并改变它。

          2. 一些公司正在使用控制器将类注入其中。在构造函数本身中可能有大量的注入和分配类。 这就是为什么不应在此代码级别上定义关键检查的原因。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-09-15
            • 1970-01-01
            • 2020-09-30
            • 2021-07-22
            • 1970-01-01
            • 2010-11-14
            • 1970-01-01
            相关资源
            最近更新 更多