小编Zac*_*ack的帖子

使用salt登录的Symfony 2始终返回Bad凭据

如果我使用salt来解码我的密码,登录总是会返回"Bad credentials".

我正在使用Fixture来创建一些testdata:

public function load(ObjectManager $manager)
{
    $encodeFactory = $this->container->get('security.encoder_factory');

    $user = new User();
    $user->setUsername('admin');
    $user->setEmail('webmaster@aranox.de');

    $encoder = $encodeFactory->getEncoder($user);
    $user->setPassword($encoder->encodePassword('admin', $user->getSalt()));

    $user->setIsEnabled(true);

    $manager->persist($user);
    $manager->flush();

    $this->addReference('user-admin', $user);
}
Run Code Online (Sandbox Code Playgroud)

我在security.yml中设置了编码:

security:
    encoders:
        Aranox\UserBundle\Entity\User:
            algorithm: sha512
Run Code Online (Sandbox Code Playgroud)

使用以下方法在我的用户实体中创建salt:

...
/**
 * @ORM\Column(type="string", length=255)
 */
private $password;
/**
 * @ORM\Column(type="string", length=255)
 */
private $salt;

...
function __construct()
{
    $this->groups               = new ArrayCollection();
    $this->salt                 = md5(uniqid(null, true)); 
...
Run Code Online (Sandbox Code Playgroud)

如果不创建盐($ this-> salt =""),一切正常.

怎么会发生这种情况?

php security login salt symfony

3
推荐指数
1
解决办法
3331
查看次数

标签 统计

login ×1

php ×1

salt ×1

security ×1

symfony ×1