使用salt属性检索用户实体

时间:2013-04-27 20:40:58

标签: symfony fosuserbundle fosfacebookbundle

无论如何我可以从数据库中加载一个用户,并在对象中加入salt属性吗?

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

我提供了一个允许用户使用Facebook登录的修改,如果他的电子邮件已经注册,他将facebookId绑定到该现有帐户。

问题是,当调用updateUser()方法时,密码会更新,用户再也无法使用他的用户名和密码登录。

我需要以某种方式保留密码。我正在考虑再次设置用户的旧盐和实际的哈希密码,但是用户实体没有加载salt或普通密码,只加载了哈希密码。

1 个答案:

答案 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);
    }
}