3

sha1()私は、ソルトなしで関数でパスワードを暗号化するレガシーアプリケーションを持っています。

現在、そのサイトは Symfony2 と FOSUserBundle に変換されていますが、それらを新しいデータベースに転送するにはどうすればよいですか?

4

3 に答える 3

2

私は同じ問題を抱えていました

@iamdtoで説明されているように、エンコーダーをオーバーライドするだけです

# app/config/security.yml
security:
    encoders:
        FOS\UserBundle\Model\UserInterface: 
           id: your.custom.encoder

あなたのクラスは

use Symfony\Component\Security\Core\Encoder\PasswordEncoderInterface;

class CustomEncoder implements PasswordEncoderInterface
{

    public function encodePassword( $raw, $salt ) {
        //do not use salt here
        return sha1($raw);
    }

    public function isPasswordValid( $encoded, $raw, $salt ) {
        return $encoded === $this->encodePassword( $raw, $salt );
    }
}

レガシーユーザーを取得し、次回のログイン時に情報を更新するには、列「バージョン」を追加する必要があります

于 2013-01-26T16:49:57.210 に答える
1

やってみました :

# app/config/security.yml
security:
    encoders:
        FOS\UserBundle\Model\UserInterface: sha1

これらの参照も見てください。

于 2013-01-21T10:07:07.907 に答える