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
我最近自己对此做了一些研究,以便我可以在 XACML 请求中发送此信息作为环境的一部分。
据我所知,从 GitHub 上出现的问题如下:
https://github.com/symfony/symfony/issues/14435
目前没有办法可靠地从 Symfony 中获取信息,除了链接问题上建议的脏编译器传递 hack 之外。从有关这些问题的对话中确实可以看出,他们正在努力提供此功能,但是,状态仍处于开放状态,因此我们必须耐心等待提供。