symfony2:覆盖 DefaultAuthenticationSuccessHandler 抛出异常:"Authentication Success Handler did not return



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

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

在我的安全。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;添加到处理程序中,我也会得到相同的错误。如果在安全性中定义了处理程序,那么我需要添加重定向到处理程序似乎毫无意义。yml,这是我能想到的唯一选项。

如何解决这个问题?

看看默认处理程序的onAuthenticationSuccess()方法。

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

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

如果您清除onAuthenticationSuccess()方法…default_target_path只是不再使用了。

重定向是必要的,以便在身份验证成功后在浏览器中显示正确的url。

相关内容

最新更新