2

気に入らない方法でハッシュ化されたパスワードを含む古いユーザー データベースがあります。ログイン時に、これらのハッシュが新しいハッシュ形式 (bcrypt) に更新されることを望みます。

FOSUserBundle を使用してユーザーを管理し、Elnur の bcrypt バンドルをセキュリティ エンコーダーとして使用しています。この種のアルゴリズムを追加するためにパスワードチェックメカニズムにプラグインする簡単な方法はありますか?

if passwordHash is using old format
  oldFormatHash := hash userGivenPassword in the old way
  if oldFormatHash == passwordHash
     login ok
     update password in database with new hash format
  else
     login ko
else
  use default 

現在のセキュリティ エンコーダーを拡張することを考えましたが、isPasswordValidメソッドには確認するアカウントの ID (またはその正規名) がないため、更新部分は利用できません。

4

1 に答える 1

1

この問題に直面した人を助けることができる場合は、私が使用した解決策を次に示します。パスワードをデータベースに保存する古い方法では、ソルトは使用されませんでした。そこで、この列を更新してユーザーの ID を含めました。

その後、salt パラメーターを使用してユーザーのパスワード ハッシュを更新する独自のセキュリティ エンコーダーを簡単に作成できました。

于 2012-03-28T16:33:23.380 に答える