2012-03-28 4 views
2

私は好きではない方法でパスワードをハッシュした古いユーザーのデータベースを持っています。 ログイン時にこれらのハッシュを新しいハッシュフォーム(bcrypt)に更新したいと考えています。複数の種類のハッシュをチェックできるようにsymfonyのパスワードチェックを無効にする方法

ユーザーを管理するのにFOSUserBundleを使用し、セキュリティエンコーダとしてElnur's bcrypt bundleを使用しています。私は現在のセキュリティエンコーダを拡張することについて考えたがisPasswordValid方法は、アカウントのIDを確認する必要はありません

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 

(または:この種のアルゴリズムを追加するために、パスワードのチェック機構にプラグインする簡単な方法はありますその正規の名前)、更新部分は利用できません。

答えて

1

この問題に直面するのを助けることができる場合は、ここで私が使用した解決策があります。 パスワードをデータベースに保存する古い方法では塩を使用していませんでした。そこで、この列を更新してユーザーのIDを格納しました。

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

関連する問題