我有一个系统,它有两个角色(管理员和用户)。使用Security Symfony2组件进行身份验证。管理员不知道用户密码。但他应该能够以用户身份登录系统。我有一个包含所有用户的网格,并且想要添加按钮,例如"以此用户身份登录"。我该怎么做?
我试过了,但没有试过:
$userRepo = $this->getDoctrine()->getRepository('FrameFoxBackEndBundle:User');
$this->get('security.context')->getToken()->setUser($userRepo->find(1));
答案 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
您可以定义允许切换用户的角色,以及允许您切换用户的网址中的参数。