3

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

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

提前致谢

4

2 回答 2

8

最好的方法是让所有模板扩展一个基本模板。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 中呈现表单。

于 2012-08-12T10:19:43.573 回答
1

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

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

于 2012-08-12T10:49:07.287 回答