1

安全性.yml:

providers:
    main:
        entity: { class: Tg\UserBundle\Entity\User, property: username }
encoders:
    Tg\UserBundle\Entity\User: sha512

在我的经理注册期间,我设置了密码:

    $encoder = $this->encoder->getEncoder($user);
    $raw = $user->getPassword();
    $salt = $user->getSalt();
    $encoded = $encoder->encodePassword($raw, $salt);

    if (!$encoder->isPasswordValid($encoded, $raw, $salt)) {
        throw new \Exception('Password incorrectly encoded during user registration', 428);
    } else {
        $user->setPassword($encoded);
    }

在我的用户实体中,我有基本的构造盐:

$this->salt = md5(uniqid(null, true));

我在默认登录模板上收到错误:

提供的密码无效。

什么?

4

2 回答 2

1

这不完全是一个答案(我不知道为什么你的例子不起作用)。但我使用的是 sha512 base64 编码,这个设置对我来说很好用:

security:
    encoders:
        Acme\HelloBundle\Entity\User:
            algorithm: sha512
            encode_as_base64: true
            iterations: 10

类中的盐初始化User

$this->salt = base_convert(sha1(uniqid(mt_rand(), true)), 16, 36);

希望这可以帮助。

于 2012-06-22T23:50:31.547 回答
0

我也遇到了这个错误。您需要确保您的密码字段可以支持 sha512 哈希大小。我认为教程将密码字段默认设置为 40 的大小。您需要将其扩展为更大的大小(125)。

于 2012-08-07T19:38:55.613 回答