如何在Symfony2中以登录形式部分捕获身份验证错误

时间:2015-05-30 09:02:20

标签: symfony authentication twig fosuserbundle

亲爱的StackOverflow社区,

目前,我正在Symfony2中实施身份验证系统,同时为我的用户实体使用FOSUserBundle。

我创建了一个包含登录表单的Twig部分,我想重复该表单。全局捕获身份验证错误的最佳方法是什么,最好不要在控制器中捕获错误,因为我希望表单能够在应用程序的每个页面上运行。

我发现在身份验证失败时设置了会话变量_security.last_error。我可以使用框架中的钩子吗?

1 个答案:

答案 0 :(得分:1)

为了从控制器中分离捕获身份验证失败错误消息,我已经编写了一个服务。

使用以下行捕获异常:

$authenticationUtils = $this->getContainer()->get('security.authentication_utils');
$error = $authenticationUtils->getLastAuthenticationError();

我已将服务注册为全局twig变量,现在我可以重用登录表单部分,而无需编辑负责包含部分的布局的控制器。