我在我的Laravel 5.2应用程序中使用控制器中间件。根据文档,要排除中间件处理的特定操作,我需要使用 except
数组:
class UserController extends Controller
{
public function __construct() {
// Exclude foo- and barAction from auth middleware
$this->middleware('auth', ['except' => [
'fooAction',
'barAction',
]]);
}
}
当然,控制器中的方法总数几乎总是大于路由.php中链接到特定路由的方法数量。因此,除了路由操作之外,还会有其他操作,严格处理逻辑 - 公共或私有方法。
我是否需要从中间件中排除所有这些非路由操作,或者排除路由操作就足够了?
编辑:
我想说的是,其他非路由方法 - 因为它们无法从外部访问 - 不需要从中间软件中排除。问题是:每次访问它们时,中间件是否都为它们运行?我不会这么说,但很高兴确定。
您的$this->middleware()
方法在 IlluminateRoutingController
中定义:它只是将其参数保存在只能通过 getter 访问的受保护属性中。
除了在测试中,该 getter 仅在两个地方调用:
-
IlluminateFoundationConsoleRouteListCommand
(处理route:list
工匠命令);和 -
IlluminateRoutingControllerDispatcher
(将路由呼叫分派到控制器)。