Symfony 2安全捆绑包如何注册到内核事件


How Symfony 2 Security Bundle registers to Kernel Events

首先,我不是Symfony 2的专家,但我正在努力了解Symfony SecurityBundle的实际工作原理。

我在文档中看到,会话的基本实现可以是向内核事件注册EventListener。然后我开始查看更复杂的SecurityBundle来理解它,但在security.yml中找不到任何配置,也找不到Bundle中注册任何事件的方法。我知道Bundle是有效的,但我想了解它是如何绑定到Request->Response流来拦截和过滤请求的。

提前感谢。。。

symfony安全组件只有一个内核侦听器,当然,根据请求,正如Cerad在评论中所说,"各种服务和注册都是动态完成的,因为不同的防火墙可能不同",基本上它就像内核侦听器(2)中的自定义侦听器(1),内核侦听器的定义在SecurityBundle(3)中,从app/config/security.yml创建服务的神奇之处在于SecurityBundle的SecurityExtension(4)。

基本上,要在非symfony项目中集成symfony安全性,您需要在AppKernel中添加SecurityBundle,因此最困难的部分是拥有一个与其他系统共存的AppKernel。

(1) Symfony''Component''Security''Http''Firewall''ListenerInterface(2) Symfony''Component''Security''Http''防火墙(3)/vender/symfony/symfony/src/symfony/Bundle/SecurityBundle/Resources/config/security.xml(4) Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension