我的最终目标是检查某个路由名称是否在应用程序的安全区域内。
我想,为了实现这一点,我应该解析security.yml,获取“防火墙”部分,并通过每个防火墙尝试将我的路由名称的路径与“secured_area”防火墙的模式匹配。
作为symfony2的新手,我试图挖掘它的源代码,以找到它如何解析security.yml本身,但是我有点被这个过程中涉及的类的数量所淹没。
所以,我在征求意见:
这是解决问题的正确方法还是有更直接的解决方法?
关于如何写这个有什么提示吗?

最佳答案

好吧,我最后做了一些类似的事情:

    $route = $this->router->getRouteCollection()->get($routeName);
    $yamlParser = new Yaml\Parser();
    $securityConfig = $yamlParser->parse(file_get_contents($this->securityFilePath));
    foreach ($securityConfig['security']['firewalls'] as $firewallName => $definition) {
        if (isset($definition['pattern']) && preg_match('{'.$definition['pattern'].'}', $route->getPath())) {
            return $firewallName;
        }
    }

可能不是最干净的解决方案,但确实有效。

09-12 01:12
查看更多