php - 使用 salt login 的 Symfony 2 总是返回 Bad credentials

标签 php security symfony authentication salt

如果我使用 salt 来解码我的密码,登录总是返回“Bad credentials”。

我正在使用 Fixture 创建一些测试数据:

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);
}

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

security:
    encoders:
        Aranox\UserBundle\Entity\User:
            algorithm: sha512

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

...
/**
 * @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)); 
...

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

这怎么会发生?

最佳答案

请检查实体文件中的密码字段长度,如果小于 255,则将其增加到 255,因为 sha512 包含长字符串。

关于php - 使用 salt login 的 Symfony 2 总是返回 Bad credentials,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13156274/

相关文章:

php - PHP页面在以下代码的第9行显示了解析错误,请帮助解决此问题

javascript - Jquery动态添加行不允许保存数据

sql-server - 黑客可以欺骗或注入(inject)表单字段吗?

java - 包含敏感数据的可序列化类

php - 从 KernelEvents::CONTROLLER 订阅者返回响应

php - While 循环:将两个结果分组到一个 div 上

php - mySQL TIME 函数和时区

javascript - 在安全 (https) 互联网网站内通过 http 与 LAN 设备进行通信

php - 在Symfony的生产模式下使用PHP的内置Web服务器

forms - Symfony2 - 如何在使用 query_builder 时自定义实体字段类型的选择选项标签?