我的最终目标是检查某个路线名称是否属于应用程序的安全区域。
我想要实现这一点,我应该解析security.yml,获取“防火墙”部分并通过每个防火墙尝试将我的路由名称的路径与“secured_area”防火墙的模式匹配。
作为Symfony2的新手,我尝试挖掘它的源代码以找到它如何解析security.yml本身,但是我对这个过程中涉及的类的数量感到有些不知所措。
所以,我在征求意见:
这是解决问题的正确方法还是有更直接的解决方案?
关于如何写这个的任何提示?
答案 0 :(得分:2)
好吧,我最终做了一些事情:
$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;
}
}
可能不是最干净的解决方案,但可以胜任。