我的一个项目面临着一个很好的挑战。
我需要在我正在开发的第三方软件包服务中注入为防火墙定义的用户提供程序。 我无法在我的服务中明确定义,因为我想实现这一点,当从不同防火墙调用服务或用户更改security.yaml
中的提供程序时,我的服务适应使用合适的提供者。
我能够完成的是通过注入RequestStack
和FirewallMap
并使用当前请求获取FirewallConfig
来获取提供者的名称,但没有任何内容更多,只是名字。
我想知道是否有办法做到这一点。关于这一点,文档中没有任何内容。但我确信必须有一种方法,因为Security Bundle中的身份验证侦听器也会这样做。
我正在阅读你聪明的回答! :)
答案 0 :(得分:0)
您是否尝试过调查FirewallConfig
课程?它没有很好地记录,但它存在,可以通过$firewallMap->GetFirewallConfig($request)
访问。有关防火墙的每个信息都存储在此对象以及提供程序($firewallConfig->getProvider()
)中。
如果您能够注入FirewallMap
配置,我认为您也可以将当前Request
对象作为参数传递以获取FirewallConfig
:
public class YourService()
{
...
public function YourMethod(Request $request)
{
// Your FirewallMap injection
...
$firewallConfig = $firewallMap->getFirewallConfig($request);
// Proceed with $firewallConfig information
}
}
有关FirewallConfig
课程here的更多信息。