来自Session的Symfony2自动加载用户

时间:2014-05-08 20:16:20

标签: php symfony doctrine-orm

我是symfony的新手,我正在尝试构建一个登录系统。 我有一个非常简单的关系来存储用户

user(id:PK, name:string)

用户登录后,我将userId存储在他的会话中

$session = new Session();
$session->set('userId', $user->getId());

我稍后使用userId从数据库中获取用户并显示个性化内容。这是我控制器中的代码

$session = new Session();
$user = $this->getDoctrine()->getRepository('MyBundle:User')->find($session->get('userId'));

如何告诉symfony在每次请求时自动获取用户,而无需为每个控制器自己编写代码?

1 个答案:

答案 0 :(得分:1)

Symfony非常稳固security system,你应该以它的方式实现你的登录系统。您可以在Cookbook中找到有关如何将传统登录系统与数据库集成的信息。

如果您以这种方式验证用户,则可以轻松获取当前用户:

$user = $this->get('security.context')->getToken()->getUser();

或者,如果您在控制器操作中:

$user = $this->getUser();

还有FOSUserBundle,它为您提供了一些很好的工具来处理系统中的常见用户管理。