Login Symfony2:从每个页面登录

Login Symfony2:从每个页面登录,login,symfony,Login,Symfony,我有一个Symfony2Web应用程序,需要用户登录才能执行这些有用的操作。在Symfony中,您可以放置一个指向登录页面的链接,然后由框架处理的安全性来完成其余工作。您必须在security.yml配置文件中定义登录页面的路由 我想知道是否有可能让用户登录网站的每个页面(例如,在页面顶部插入登录表单)。这将节省页面负载,不会打扰用户 提前感谢最好的方法是让所有模板都扩展一个基础模板。也就是说,在你所有的小枝模板中都有类似的东西 {% extends 'YourBundle::base.html

我有一个Symfony2Web应用程序,需要用户登录才能执行这些有用的操作。在Symfony中,您可以放置一个指向登录页面的链接,然后由框架处理的安全性来完成其余工作。您必须在security.yml配置文件中定义登录页面的路由

我想知道是否有可能让用户登录网站的每个页面(例如,在页面顶部插入登录表单)。这将节省页面负载,不会打扰用户


提前感谢

最好的方法是让所有模板都扩展一个基础模板。也就是说,在你所有的小枝模板中都有类似的东西

{% extends 'YourBundle::base.html.twig' %}
在base.html.twig中,呈现一个控制器,用于呈现登录表单。为此,请在base.html.twig中执行以下操作:

{% render "YourBundle:Security:loginForm" %}
public function loginFormAction()
{
    $loginForm = //create the form
    return $this->render('YourBundle:Security:loginForm.html.twig', array(
        'form' => $loginForm,
    }
}
然后创建控制器动作,类似于:

{% render "YourBundle:Security:loginForm" %}
public function loginFormAction()
{
    $loginForm = //create the form
    return $this->render('YourBundle:Security:loginForm.html.twig', array(
        'form' => $loginForm,
    }
}

最后,在loginForm.html.twig中呈现表单。

Symfony2防火墙在security.yml中定义的登录操作中使用
\u用户名、密码、记住我和目标路径


您可以在您想要的每个页面(例如页眉中)放置一个使用这些表单名称的表单(使用formBuilder、formType或直接到模板中的字段,由您决定),并将其发送到您的登录操作。Symfony将自动处理此问题,并为您完成其余的工作

这难道不提供这样的安全问题吗??对不起,我不明白你的意思?可能是为了避免在每个请求中加载表单。如果登录控制器很大或者需要执行许多操作,那么这可能是有意义的。我认为每个呈现调用都会产生一个新的请求是错误的。那太疯狂了。我认为你不应该为这些事操心。在prod模式下,所有内容都被缓存,并且速度很快。当然,所有内容都在服务器端进行渲染,但不同的是,在同一个操作中执行所有内容,或者渲染两个不同的操作。您可以轻松地测试它,包括一个细枝模板,然后在其他测试中渲染它;查看Symfony2栏中的内存使用情况,此测试将阐明这一概念