FOSUserBundle 自定义登录流程

FOSUserBundle customise login process

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

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

但是我有两个问题我不知道如何克服...

  1. 如果用户输入了无效的凭据,我如何才能 return 用户到他们所在的页面而不是 /login 路由?

  2. 如何拦截错误消息(无效凭据等)?我想让它成为一个闪现消息,然后在主模板的其他地方显示它。

如果需要,很乐意提供更多信息。

t2t

您可以在 'onAuthenticationFailure' 上创建一个 eventListener。 您将获得请求和推荐人。

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

这样做;

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

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

3- 将 renderLogin 的 return 更改为您自己的 login.html.twig

完成这些步骤后,您可以随意修改。如果您想在错误的凭据后使用不同的路由,请检查 $error 变量并进行重定向。