我有一个 Symfony2 Web应用程序,需要用户登录才能执行此类有用的操作。在Symfony中,您可以放置一个指向登录页面的链接,然后由框架处理的安全性完成剩下的工作。您必须在 security.yml 配置文件中定义登录页面的路由。
我想知道是否可能和如何让用户登录网站的每个页面(例如,通过在页面顶部插入登录表单) )。这将节省页面加载,不会打扰用户。
提前致谢
答案 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将自动处理并为您完成其余的工作!