我想setTargetPath
从默认的ExceptionListener(文档)中覆盖。但我需要额外的服务来处理这个。
在我看来,只有覆盖服务定义,将其复制到我的服务定义并创建自己的构造函数的方法,但我不喜欢这种方法。
有没有其他方法可以做到这一点?
我想setTargetPath
从默认的ExceptionListener(文档)中覆盖。但我需要额外的服务来处理这个。
在我看来,只有覆盖服务定义,将其复制到我的服务定义并创建自己的构造函数的方法,但我不喜欢这种方法。
有没有其他方法可以做到这一点?
至于答案,如果您使用的是 form_login 类型,则可以将其设置为一个常量路由,登录后应该在该路由处发生重定向。配置
您应该设置这两个键:
always_use_default_target_path: true
default_target_path: /route_name_for_redirect
或选项 B,您使用成功处理程序服务,您只需返回一个 RedirectResponse
我发现了另一种使用编译器传递的方法,需要执行以下步骤:
创建一个包含如下内容的编译器通道:
class WebCompilerPass implements CompilerPassInterface
{
public function process(ContainerBuilder $container)
{
$definition = $container->getDefinition('security.exception_listener');
$definition->addMethodCall('yourmethod', [ new Reference('your dependency') ]);
}
}
覆盖异常监听类参数:
security.exception_listener.class: AcmeBundle\EventListener\SecurityExceptionListener