我目前在基于Symfony 3.4的项目中使用FOSUserBundle。我们已经计划了一些前端设计更改,我想将登录表单集成到标准页面模板中,以使未登录的用户能够在应用程序上的任何位置登录。
在我的模板文件中,我正在调用:
{{ render(controller('FOSUserBundle:Security:login')) }}
。这样可以正确在相关页面中呈现登录表单。
但是我有两个问题,我无法弄清楚该如何克服...
如果用户输入的凭据无效,如何将用户返回到他们所在的页面而不是/login
路由?
如何截获错误消息(无效的凭据等)?我想将其显示为即时消息,然后将其显示在主模板的其他位置。
很高兴在需要时提供更多信息。
t2t
答案 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
变量,并重定向。