管理员以Symfony2 Security身份登录另一个用户

时间:2012-09-07 09:08:29

标签: php symfony

我有一个系统,它有两个角色(管理员和用户)。使用Security Symfony2组件进行身份验证。管理员不知道用户密码。但他应该能够以用户身份登录系统。我有一个包含所有用户的网格,并且想要添加按钮,例如"以此用户身份登录"。我该怎么做?

我试过了,但没有试过:

$userRepo = $this->getDoctrine()->getRepository('FrameFoxBackEndBundle:User');
$this->get('security.context')->getToken()->setUser($userRepo->find(1));

3 个答案:

答案 0 :(得分:11)

为什么不使用内置的switch user选项?

答案 1 :(得分:4)

我使用此代码:

// use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken
$entity = $userRepo->find(1);

// Authentication
// create the authentication token
$token = new UsernamePasswordToken(
    $entity,
    null,
    'user_db',
    $entity->getRoles());
// give it to the security context
$this->container->get('security.context')->setToken($token);

答案 2 :(得分:0)

我会以这种方式使用Symfony核心支持。 看一下: http://symfony.com/doc/current/cookbook/security/impersonating_user.html

您可以定义允许切换用户的角色,以及允许您切换用户的网址中的参数。