我有一个Symfony2 Web 应用程序,它需要用户登录才能执行这些有用的操作。在 Symfony 中,您可以放置一个指向登录页面的链接,然后由框架处理的安全性完成剩下的工作。您必须在security.yml配置文件中定义登录页面的路由。
我想知道是否有可能以及如何让用户登录网站的每个页面(例如,通过在页面顶部插入登录表单)。这将节省页面加载并且不会打扰用户。
提前致谢
最好的方法是让所有模板扩展一个基本模板。IE,在你所有的 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 中呈现表单。
Symfony2 防火墙使用_username, _password, _remember_me and _target_path
您在 security.yml 中定义的登录操作。
您可以在您想要的每个页面上(例如在标题中)放置一个使用这些表单名称并将它们发送到您的登录操作的表单(使用 formBuilder、formType 或直接到模板中的字段,由您决定)。Symfony 将自动处理并为您完成其余的工作!