Symfony2如何将参数传递给auth成功处理程序

时间:2013-04-11 06:36:07

标签: authentication symfony service

当symfony2通过登录表单对用户进行身份验证时,会触发事件security.authentication.success并由DefaultAuthenticationSuccessHandler处理。该对象的构造函数有两个参数HttpUtils $httpUtilsarray $options。变量$options不为空,包含来自security.yml的配置选项,如:

login_path => pkr_blog_admin_login
user_referer => false
...

我创建了一个扩展AuthenticationSuccessHandler的服务DefaultAuthenticationSuccessHandler,但找不到将security.yml中的值作为$ options传递给我的对象的构造函数的方法。我怎么能这样做?

我曾尝试使用xdebug逐步调试,看看这些选项是如何传递给DefaultAuthenticationSuccessHandler但在代码中找不到确切的位置:/

// EDIT

我发现此配置在src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/AbstractFactory.php中设置,仅在默认处理程序中设置。

以下是一些关于未在自定义处理程序中从security.yml获取配置的注释:

https://github.com/symfony/symfony/issues/5432
https://github.com/symfony/symfony/issues/5488

任何人都知道如何通过我的处理程序中的默认处理程序解析配置并准备使用它?

我想可以通过将服务容器传递给我的处理程序来完成。我将在下班后尝试这个。

1 个答案:

答案 0 :(得分:1)

似乎唯一能使其工作的方法是使用编译器传递并更改默认处理程序类。看到我的类似问题:

更好的方法是使用service作为事件处理程序:

Symfony2 extending DefaultAuthenticationSuccessHandler