Symfony2 - 显示错误的凭据错误

时间:2014-04-24 08:58:41

标签: php symfony login error-handling

我一直在Symfony2中编写自定义身份验证提供程序。到目前为止一切正常,但是当我输入错误的密码时,会出现内部服务器错误,显示:“LDAP身份验证失败”。

现在,这是我想要显示的消息,但是我想在登录表单上方显示它,而不是抛出内部服务器错误。在我的听众中,我有以下内容:

try {
        $authToken= $this->authenticationManager->authenticate($token);
        $this->securityContext->setToken($authToken);

        return;
} catch (AuthenticationException $failed) {
        throw new BadCredentialsException($failed->getMessage(), 0);
}

那么是否有人可以告诉我我需要做些什么来向用户显示消息,而不是抛出内部服务器错误?

提前致谢。

2 个答案:

答案 0 :(得分:0)

您可以在控制器中手动将错误添加到登录表单中。例如:

$form->get('username')
    ->addError(new FormError($message));

答案 1 :(得分:0)

你应该有一个控制器动作来捕获表单的相同路径以捕获异常。

将在显示表单之前尝试验证过程。

你可以看到这个例子: https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Controller/SecurityController.php