我安装了FOSUserBundle,但我的设计要求登录表单显示在主页上,而不是单独的登录页面,但包含在由HomeBundle:Default:index控制的主页中。更改FOSUserBundle上的登录页面
所以,如果你访问一个页面,需要登录,你会被重定向到我的主页,我的登录表单是。
为了做到这一点:我改变了vendor > friendsofsymfony > user-bundle > FOS > Resources > routing > security.xml
<route id="fos_user_security_login" pattern="/login"> <default key="_controller">FOSUserBundle:Security:login</default> </route>
指向显示我的主页控制器。 这个工程(它显示我的登录页面),但这里出现了问题,当我尝试登录时,它从未登录过我,而是显示相同的页面。输入的名称是正确的,也是“动作”,与默认登录表单的值相同。
如果我在默认情况下使用登录页面,它会将我登录,所以db无问题。 我试图打印错误日志中的过程可能特罗打印该计算出这个代码$错误:
$请求= $这个 - >容器 - >获取(“请求”);请求/ $ session = $ request-> getSession(); / @var $会话\的Symfony \分量\ HttpFoundation \会议*/
// get the error if any (works with forward and redirect -- see below)
if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
$error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR);
} elseif (null !== $session && $session->has(SecurityContext::AUTHENTICATION_ERROR)) {
$error = $session->get(SecurityContext::AUTHENTICATION_ERROR);
$session->remove(SecurityContext::AUTHENTICATION_ERROR);
} else {
$error = '';
}
if ($error) {
// TODO: this is a potential security risk (see http://trac.symfony-project.org/ticket/9523)
$error = $error->getMessage();
}
// last username entered by the user
$lastUsername = (null === $session) ? '' : $session->get(SecurityContext::LAST_USERNAME);
$csrfToken = $this->container->get('form.csrf_provider')->generateCsrfToken('authenticate');
但似乎没有错误。
的链接[2.x版](https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/overriding_templates.rst) 和[symfony的文档内](HTTPS ://symfony.com/doc/master/bundles/FOSUserBundle/overriding_templates.html) – 2018-01-07 12:57:39