是否可以将当前防火墙的用户提供商服务注入自定义服务?

时间:2018-05-10 11:23:02

标签: php symfony authentication symfony-security

我的一个项目面临着一个很好的挑战。

我需要在我正在开发的第三方软件包服务中注入为防火墙定义的用户提供程序。 我无法在我的服务中明确定义,因为我想实现这一点,当从不同防火墙调用服务或用户更改security.yaml中的提供程序时,我的服务适应使用合适的提供者。

我能够完成的是通过注入RequestStackFirewallMap并使用当前请求获取FirewallConfig来获取提供者的名称,但没有任何内容更多,只是名字。

我想知道是否有办法做到这一点。关于这一点,文档中没有任何内容。但我确信必须有一种方法,因为Security Bundle中的身份验证侦听器也会这样做。

我正在阅读你聪明的回答! :)

1 个答案:

答案 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的更多信息。