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

我的同事为此目的写了一个包:

https://packagist.org/packages/markup/fallback-password-encoder-bundle

于 2014-01-22T17:54:38.210 回答
1

你有没有尝试过 :

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

你也应该看看这些参考资料:

于 2013-01-21T10:07:07.907 回答