0

オブジェクト内にソルトプロパティを使用して、データベースからユーザーをロードできる方法はありますか?

FOSFacebookBundle と統合された FOSUserBundle を使用しています。

ユーザーが Facebook でログインできるようにする 1 つの変更を行います。ユーザーの電子メールが既に登録されている場合は、facebookId をその既存のアカウントにバインドします。

問題は、updateUser()メソッドが呼び出されるとパスワードが更新され、ユーザーは自分のユーザー名とパスワードを使用して再度ログインできなくなることです。

その時点で、どうにかしてパスワードを保持する必要があります。ユーザーの古いソルトと実際のハッシュされたパスワードを再度設定することを考えていましたが、ユーザーエンティティにはソルトもプレーンパスワードもロードされず、ハッシュされたパスワードのみがロードされます。

4

1 に答える 1

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);
    }
}
于 2013-04-28T03:06:04.830 に答える