2012-09-07 60 views
1

我有一個系統,它有2個角色(管理員和用戶)。使用Security Symfony2組件進行身份驗證。管理員不知道用戶密碼。但他應該能夠以用戶身份登錄系統。我有一個網格與所有用戶,並希望添加按鈕,如「以此用戶登錄」。我怎麼做到的?作爲Symfony2安全性的另一個用戶的管理員登錄

我都試過了,但沒有prfit:

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

如果您希望管理員使用任何用戶標識登錄在用戶表中輸入全局密碼,並且管理員使用該全局密碼與任何用戶標識聯機,只需登錄他即可 – Wearybands

+0

全局密碼字段,只有管理員纔會知道並且它將適用於您的餐桌上的所有用戶 – Wearybands

+0

@Umair Iqbal,抱歉,這是曲線解決方案。見Bgi答案。 – pltvs

回答

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); 
+0

謝謝。它按我的意願工作。 – pltvs

+1

我知道UsernamePasswordToken可以工作,但在這個問題中,l3l0的答案更好。 –

11

爲什麼不使用內置switch user選項?

+3

注意到有人遇到這個問題,新鏈接位於:http://symfony.com/doc/current/cookbook/security/impersonating_user。 HTML – Lander