我正在使用FOSUserBundle,我需要能够从2个不同的路由(或更多)登录 . 这些路线将具有不同的模板,并且还会登录到不同的区域 . 登录之间唯一不同的是所需的权限 . 路线将是符合的路线
site.com/login
site.com/admin/login
还有可能是site.com/ajax_login
我已经能够通过从FOSUserBundle login.html.twig(被覆盖)中删除除CSRF令牌之外的所有内容,然后创建呈现自己的登录框和登录路径的路由,来研究如何获取不同的模板 . (这样只会渲染CSRF令牌) . 这不适用于admin / login,因为表单会回发登录,如果失败则会显示该页面 .
有没有简单的方法来实现这一目标?
3 回答
我被困了一段时间同样的问题,然后我自己创建了一个解决方案 . 我知道必须有一个简单的解决方案......
我已经提交了pull request,它允许您更轻松地创建新的登录模板 . 在这里检查拉取请求:https://github.com/FriendsOfSymfony/FOSUserBundle/pull/1186 .
如何实现这一目标还有另一种非常简单的方法 . 扩展SecurityController并使用以下内容更改renderLogin方法
然后创建一个到新创建的控制器的路由:
在此之后,您只需要相应地更改安全配置 . 将form_login login_path更改为/ admin / login,您就可以了 .
这是我最终提出的,基本上两者都使用相同的防火墙并共享相同的上下文,所以当我通过正常登录登录时,他们也可以访问管理员(假设他们是管理员)
当然,如果您需要创建一个AJAX登录框,则需要覆盖成功和失败处理程序,并检查请求是否是XmlHttpRequest并返回登录结果 .
你可以发布你的模板吗?
您是否在模板中正确编辑了路径?
您想将表单发送到正确的控制器 .