我一直在Symfony2中编写自定义身份验证提供程序。到目前为止一切正常,但是当我输入错误的密码时,会出现内部服务器错误,显示:“LDAP身份验证失败”。
现在,这是我想要显示的消息,但是我想在登录表单上方显示它,而不是抛出内部服务器错误。在我的听众中,我有以下内容:
try {
$authToken= $this->authenticationManager->authenticate($token);
$this->securityContext->setToken($authToken);
return;
} catch (AuthenticationException $failed) {
throw new BadCredentialsException($failed->getMessage(), 0);
}
那么是否有人可以告诉我我需要做些什么来向用户显示消息,而不是抛出内部服务器错误?
提前致谢。
答案 0 :(得分:0)
您可以在控制器中手动将错误添加到登录表单中。例如:
$form->get('username')
->addError(new FormError($message));
答案 1 :(得分:0)
你应该有一个控制器动作来捕获表单的相同路径以捕获异常。
将在显示表单之前尝试验证过程。
你可以看到这个例子: https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Controller/SecurityController.php