当symfony2通过登录表单对用户进行身份验证时,会触发事件security.authentication.success
并由DefaultAuthenticationSuccessHandler
处理。该对象的构造函数有两个参数HttpUtils $httpUtils
和array $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
任何人都知道如何通过我的处理程序中的默认处理程序解析配置并准备使用它?
我想可以通过将服务容器传递给我的处理程序来完成。我将在下班后尝试这个。
答案 0 :(得分:1)
似乎唯一能使其工作的方法是使用编译器传递并更改默认处理程序类。看到我的类似问题:
更好的方法是使用service作为事件处理程序: