2013-05-21 23 views
2

我希望能夠在我的應用程序來模擬用戶,所以我跟着tutorial from the website當我已經冒充另一個用戶時模擬一個用戶?

如果我嘗試從用戶「A」我的用戶轉變爲用戶「B」,它的工作原理,但如果我嘗試改變用戶「C」,而我已經冒充用戶「B」,該attemptSwitchUser方法拋出此excepcion:

You are already switched to "B" user. 
500 Internal Server Error - LogicException 

這是因爲這種方法檢查羯羊當前用戶名(B)等於用戶名,我們想模仿(C)

$token = $this->securityContext->getToken(); 
$originalToken = $this->getOriginalToken($token); 

if (false !== $originalToken) { 
    if ($token->getUsername() === $request->get($this->usernameParameter)) { 
     return $token; 
    } else { 
     throw new \LogicException(sprintf('You are already switched to "%s" user.', $token->getUsername())); 
    } 
} 

但是,顯然這不能永遠是這種情況,所以我不知道這是Symfony代碼中的錯誤還是還有其他錯誤。

這真的是一個錯誤嗎?我可以在不註釋掉這段代碼的情況下實現此功能嗎?

+0

也許你只是剪切/粘貼錯誤的鏈接,這將導致你嘗試模仿「用戶B」,當你已經「用戶B「 – DonCallisto

+0

不,情況並非如此,DonCallisto – zootropo

回答

4

Switched user cannot switch to other。在你能做到這一點之前,你需要切換回原始用戶(?_switch_user=_exit

+1

哦,我明白了。但是......他們爲什麼要阻止這樣的事情呢?我想不出任何有效的理由。我想這一定是因爲安全,但爲什麼呢? – zootropo

相關問題