symfony2在登录页面上获取防火墙名称

Mat*_*ssi 3 security firewall login symfony

我想使用登录页面访问不同的防火墙,所以我需要获取有关我登录的防火墙的信息.在我的控制器中我会使用

$this->container->get('security.context')->getToken()->getProviderKey()
Run Code Online (Sandbox Code Playgroud)

但作为匿名用户,我无权访问getProviderKey方法.我也可以解析

_security.xxx.target_path 
Run Code Online (Sandbox Code Playgroud)

得到xxx防火墙,但我正在寻找一个更通用的解决方案,如果它存在的话.
任何的想法?

cha*_*asr 10

从symfony 3.2开始,您现在可以使用以下命令获取当前的防火墙配置:

public function indexAction(Request $request)
{
    $firewall = $this->container
        ->get('security.firewall.map')
        ->getFirewallConfig($request)
        ->getName();
}
Run Code Online (Sandbox Code Playgroud)

参考:http://symfony.com/blog/new-in-symfony-3-2-firewall-config-class-and-profiler


Rei*_*son 1

我最近自己对此做了一些研究,以便我可以在 XACML 请求中发送此信息作为环境的一部分。

据我所知,从 GitHub 上出现的问题如下:

https://github.com/symfony/symfony/issues/14435

目前没有办法可靠地从 Symfony 中获取信息,除了链接问题上建议的脏编译器传递 hack 之外。从有关这些问题的对话中确实可以看出,他们正在努力提供此功能,但是,状态仍处于开放状态,因此我们必须耐心等待提供。