FOSUserBundle自定义登录过程

时间:2019-01-31 10:36:39

标签: symfony fosuserbundle

我目前在基于Symfony 3.4的项目中使用FOSUserBundle。我们已经计划了一些前端设计更改,我想将登录表单集成到标准页面模板中,以使未登录的用户能够在应用程序上的任何位置登录。

在我的模板文件中,我正在调用: {{ render(controller('FOSUserBundle:Security:login')) }}。这样可以正确在相关页面中呈现登录表单。

但是我有两个问题,我无法弄清楚该如何克服...

  1. 如果用户输入的凭据无效,如何将用户返回到他们所在的页面而不是/login路由?

  2. 如何截获错误消息(无效的凭据等)?我想将其显示为即时消息,然后将其显示在主模板的其他位置。

很高兴在需要时提供更多信息。

t2t

2 个答案:

答案 0 :(得分:1)

您可以在“ onAuthenticationFailure”上创建一个eventListener。 您将获得请求和引用。

答案 1 :(得分:0)

在您的情况下;您需要创建自定义的登录页面。

要做到这一点;

1-创建您自己的SecurityController.php。然后复制的LoginAction并从原始SecurityController 'renderLogin' 方法friendsofsymfony/user-bundle/SecurityController.php粘贴到它,并添加/login的路径则loginAction。

2-创建您自己的login.html.twig。然后从login_content.html.twig复制friendsofsymfony/user-bundle/Resources/Security/login_content.html.twig的内容粘贴到您自己的内容中。

3-将renderLogin的返回值更改为您自己的login.html.twig

完成这些步骤后,您可以修改任何内容。如果你想错后的凭据不同的路线,然后检查$error变量,并重定向。