2011-09-02 85 views

回答

4

如果我沒有記錯,訣竅是將令牌直接設置爲security.context服務。由於您使用的是用戶名/密碼對,因此您可以實例化一個UsernamePasswordToken類並將其設置在安全上下文中。

$securityContext = $this->get('security.context'); 
$token = new UsernamePasswordToken($username, $password, $providerKey, $roles); 

$securityContext->setToken($token); 

對於$user$password$roles參數,這是顯而易見的。對於$providerKey,我必須承認,我完全不知道要在這一個中放置什麼。因此,也許從AuthenticationProvider獲取令牌可能會更容易,或者如果您已經有權訪問TokenInterface對象。

我的anwser的主要觀點是通過方法setToken將令牌直接設置到SecurityContext對象中。但我不確定如何檢索或創建令牌:)

希望得到這個幫助。

問候,
馬特

+3

$ providerKey是防火牆的名稱,如app/config/security.yml中設置的那樣 –