2013-04-27 39 views
0

有無論如何我可以從數據庫中加載用戶與鹽屬性內的對象?檢索具有鹽屬性的用戶實體

我正在使用與FOSFacebookBundle集成的FOSUserBundle。

我修改了一個允許用戶使用Facebook登錄的修改,如果他的電子郵件已經註冊,他將facebookId綁定到該現有帳戶。

問題是,當updateUser()方法被調用時,密碼被更新,並且用戶不能再次使用他的用戶名和密碼登錄。

我需要以某種方式保持密碼在那一點。我正在考慮再次設置用戶的舊鹽和實際散列密碼,但用戶實體不會加載鹽和普通密碼,只能加密哈希密碼。

+0

請添加更多信息!你使用什麼捆綁包? FOSUserBundle?自己寫了一些?發佈您的用戶實體。 – 2013-04-27 20:57:50

+0

我編輯了帖子。 – 2013-04-27 21:04:09

+0

嗯,好笑。只有在調用setPlaintextPassword時才應更新密碼。 – 2013-04-27 21:19:01

回答

1

顯然,又出現了setFacebookId方法內的錯誤:

/** 
* @param string $facebookId 
* @return void 
*/ 
public function setFacebookId($facebookId) 
{ 
    $this->facebookId = $facebookId; 
    $this->salt = ''; 

    if(empty($this->username)) { 
     $this->setUsername($facebookId); 
    } 
} 

該鹽被覆蓋。刪除該行實際上可以解決問題:

/** 
* @param string $facebookId 
* @return void 
*/ 
public function setFacebookId($facebookId) 
{ 
    $this->facebookId = $facebookId; 

    if(empty($this->username)) { 
     $this->setUsername($facebookId); 
    } 
} 
相關問題