我的最终目标是检查某个路由名称是否在应用程序的安全区域内。
我认为要实现这一点,我应该解析 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;
}
}
可能不是最干净的解决方案,但可以完成工作。
关于php - Symfony 2 : Find matching firewall, 基于路由名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29285514/