0

当 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但在代码中找不到确切位置的:/

//编辑

我发现此配置已设置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

任何人都知道从我的处理程序中获取配置解析并准备好使用默认处理程序的方法吗?

我想这可以通过将服务容器传递给我的处理程序来完成。当我下班回来时,我会试试这个。

4

1 回答 1

1

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

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

Symfony2 扩展 DefaultAuthenticationSuccessHandler

于 2013-04-13T13:55:07.723 回答