symfony2:重写DefaultAuthenticationSuccessHandler抛出异常:“身份验证成功处理程序未返回响应。”

时间:2014-07-08 02:15:21

标签: symfony events authentication

我的自定义成功处理程序具有以下方法:

function onAuthenticationSuccess(Request $request, TokenInterface $token)
{
    // Do nothing for now
}

在我的 security.yml 中,form_login部分包含:

...
default_target_path: bundle_app_homepage
always_use_default_target_path: true
success_handler: security.authentication.success_handler

如果我删除success_handler参数,它会按预期自动重定向到bundle_app_homepage

现在我的自定义处理程序到位了:

  

身份验证成功处理程序未返回响应。

即使我向处理程序添加return null;,我也会遇到同样的错误。如果它在security.yml中定义,我需要向处理程序添加重定向似乎没有意义,这是我能想到的唯一其他选项。

如何解决此问题?

1 个答案:

答案 0 :(得分:3)

查看default-handler的 onAuthenticationSuccess() 方法。

该方法使用方法determinetargetUrl()重定向到配置的目标路径。

public function onAuthenticationSuccess(Request $request, TokenInterface $token)
{
    return $this->httpUtils->createRedirectResponse($request, $this->determineTargetUrl($request));
}

如果您清除onAuthenticationSuccess()方法...... default_target_path就不再使用了。

在成功进行身份验证后,必须使用重定向才能在浏览器中显示正确的URL。