2

我必须从密码存储在 MD5 中的旧数据库中迁移用户,而在使用 SHA512 的新应用程序中。

我的目的是新应用程序中首次登录的旧用户必须更改密码,但这意味着您可以使用 MD5 中的密码从数据库加载这些用户。

如何使用 Symfony 2.3.3 + FOSUserBundle 做到这一点?

4

3 回答 3

3

您可以创建自定义密码编码器。例如:

security:
    encoders:
        FOS\UserBundle\Model\UserInterface: { id: my_password_encoder }

然后注册该服务:

services:
    my_password_encoder:
        class: MyProject\DefaultBundle\Security\PasswordEncoder

并使用以下内容创建服务:

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

class PasswordEncoder extends BasePasswordEncoder
{
    public function encodePassword($raw, $salt)
    {
        return md5($raw);
    }

    public function isPasswordValid($encoded, $raw, $salt)
    {
        return $this->comparePasswords($encoded, $this->encodePassword($raw, $salt));
    }
}
于 2013-09-27T14:19:24.270 回答
0

您可以在用户表中添加一个字段,说明每个用户的编码是 md5 还是 sha512。

于 2013-09-03T14:31:21.827 回答
0

只要您在 security.yml 文件中将编码器设置为 md5 而不是 sha512,您应该能够让用户登录。

此外,您可能会使用:

FOS\UserBundle\Doctrine\UserManager;
Symfony\Component\Security\Core\Encoder\EncoderFactory;

加载用户。

于 2013-09-05T05:32:19.337 回答