亲爱的StackOverflow社区,
目前,我正在Symfony2中实施身份验证系统,同时为我的用户实体使用FOSUserBundle。
我创建了一个包含登录表单的Twig部分,我想重复该表单。全局捕获身份验证错误的最佳方法是什么,最好不要在控制器中捕获错误,因为我希望表单能够在应用程序的每个页面上运行。
我发现在身份验证失败时设置了会话变量_security.last_error。我可以使用框架中的钩子吗?
答案 0 :(得分:1)
为了从控制器中分离捕获身份验证失败错误消息,我已经编写了一个服务。
使用以下行捕获异常:
$authenticationUtils = $this->getContainer()->get('security.authentication_utils');
$error = $authenticationUtils->getLastAuthenticationError();
我已将服务注册为全局twig变量,现在我可以重用登录表单部分,而无需编辑负责包含部分的布局的控制器。