php - Symfony 2 : Find matching firewall, 基于路由名称

标签 php symfony

我的最终目标是检查某个路由名称是否在应用程序的安全区域内。

我认为要实现这一点,我应该解析 security.yml,获取“防火墙”部分并通过每个防火墙,尝试将我的路由名称路径与“secured_area”防火墙的模式相匹配。

作为 Symfony2 的新手,我尝试深入挖掘它的源代码以了解它是如何解析 security.yml 本身的,但我对这个过程中涉及的类的数量有点不知所措。

所以,我征求意见:

  1. 这是解决问题的正确方法还是有更直接的解决方案?

  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;
        }
    }

可能不是最干净的解决方案,但可以完成工作。

关于php - Symfony 2 : Find matching firewall, 基于路由名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29285514/

相关文章:

php - 对角读取数组以进行转置密码?

validation - FOSUserBundle - 验证用户名、密码或电子邮件字段

php - 使用 composer : "Vendor libraries must be installed" 后 Symfony 2.6 错误

使用数据透视表具有多对多关系的 PHP Laravel 应用程序

php - MySQL 使用 PHP sprintf 插入到 NULL INT 列

php - 使用mysql从数据库中检索数据

Symfony2 access_control,匹配包含某个词的所有路由

symfony - 有订单的Symfony2灯具-更好的方法

php - 如何执行任务避免用户被迫等待响应?

php - Cakephp如何删除链接上的下划线