FOSUserBundle 自定义登录流程
FOSUserBundle customise login process
我目前在基于 Symfony 3.4 的项目中使用 FOSUserBundle。我们计划对前端设计进行一些更改,我想将登录表单集成到标准页面模板中,以便未登录的用户能够在应用程序的任何位置登录。
在我的模板文件中调用:
{{ render(controller('FOSUserBundle:Security:login')) }}
。这会在相关页面中正确呈现登录表单。
但是我有两个问题我不知道如何克服...
如果用户输入了无效的凭据,我如何才能 return 用户到他们所在的页面而不是 /login
路由?
如何拦截错误消息(无效凭据等)?我想让它成为一个闪现消息,然后在主模板的其他地方显示它。
如果需要,很乐意提供更多信息。
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
变量并进行重定向。
我目前在基于 Symfony 3.4 的项目中使用 FOSUserBundle。我们计划对前端设计进行一些更改,我想将登录表单集成到标准页面模板中,以便未登录的用户能够在应用程序的任何位置登录。
在我的模板文件中调用:
{{ render(controller('FOSUserBundle:Security:login')) }}
。这会在相关页面中正确呈现登录表单。
但是我有两个问题我不知道如何克服...
如果用户输入了无效的凭据,我如何才能 return 用户到他们所在的页面而不是
/login
路由?如何拦截错误消息(无效凭据等)?我想让它成为一个闪现消息,然后在主模板的其他地方显示它。
如果需要,很乐意提供更多信息。
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
变量并进行重定向。