如果我使用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);
}
我在security.yml:
中设置了编码security:
encoders:
Aranox\UserBundle\Entity\User:
algorithm: sha512
使用以下方法在我的用户实体中创建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));
...
如果不创建盐($ this-> salt =“”),一切正常。
这怎么可能发生?
答案 0 :(得分:5)
请检查实体文件中的密码字段长度,如果少,请将其增加到255,因为sha512包含长字符串。