我正在阅读Laravel有关中间件的文档,在某个时候它说:“ it would be more convenient to specify middleware within your controller's constructor.”
我总是将中间件分配给路由文件中的路由,因为它更容易理解哪些功能受到中间件的影响。
我想知道文档中是否存在将中间件分配直接放入Controller构造函数的特定原因,还是只是出于优先考虑的问题。
答案 0 :(得分:1)
这一切都取决于您自己的选择。
我总是喜欢在路由中将中间件作为一个整体使用,这样可以使事物保持集中状态,而且我可以轻松找到它们。
Route::group(['middleware' => ['middleware1']], function () {
// your routes under middleware1
});
Route::group(['middleware' => ['middleware2']], function () {
// your routes under middleware2
});
答案 1 :(得分:0)
我认为这是一个优先事项,我想将中间件分配给该路由,因此我不必在控制器中排除某些方法,而且仅通过查看路由即可知道哪些路由使用了中间件文件。
答案 2 :(得分:0)
在控制器的构造函数中指定中间件更为方便。
这只是意味着,如果在控制器的构造函数中使用每个方法,则可以更好地控制每个方法,从而可以在方法级别指定某些规则。
但是当您分配给路由时,您只能控制路由规则。
答案 3 :(得分:0)
谢谢您的提问,正如前面提到的,在大多数情况下,这是您与之合作的团队所做出的决定。 根据我个人的经验,我只能向您解释为什么我们选择在路由文件中使用中间件定义而不是控制器。
在大型应用程序中,有很多情况下会有十几个控制器。 话虽如此,在某些情况下您必须更改一些中间件名称。如果在路由组上定义它,则只需更改一行代码,但是如果在构造函数中定义它,则必须转到每个控制器并进行更改。
一些公司正在使用控制器向其中注入特定的类。在构造函数本身中可能存在大量的注入和分配类。 这就是为什么在此级别的代码上不应该定义关键检查的原因。