无论如何我可以从数据库中加载一个用户,并在对象中加入salt属性吗?
我正在使用与FOSFacebookBundle集成的FOSUserBundle。
我提供了一个允许用户使用Facebook登录的修改,如果他的电子邮件已经注册,他将facebookId绑定到该现有帐户。
问题是,当调用updateUser()
方法时,密码会更新,用户再也无法使用他的用户名和密码登录。
我需要以某种方式保留密码。我正在考虑再次设置用户的旧盐和实际的哈希密码,但是用户实体没有加载salt或普通密码,只加载了哈希密码。
答案 0 :(得分: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);
}
}