Symfony2:从每个页面登录

时间:2012-08-12 09:57:49

标签: login symfony

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

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

提前致谢

2 个答案:

答案 0 :(得分:8)

执行此操作的最佳方法是让所有模板扩展基本模板。 I.E,在你的所有Twig模板中都有类似

的内容
{% 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,
    }
}

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

答案 1 :(得分:1)

Symfony2防火墙在您在security.yml中定义的登录操作中使用_username, _password, _remember_me and _target_path

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