我是否需要从Laravel控制器中间件中排除所有非路由操作



我在我的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 仅在两个地方调用:

  1. IlluminateFoundationConsoleRouteListCommand(处理route:list工匠命令);和

  2. IlluminateRoutingControllerDispatcher(将路由呼叫分派到控制器)。

最新更新