gpt4 book ai didi

php - Symfony2 $user->setPassword() 将密码更新为纯文本 [DataFixtures + FOSUserBundle]

转载 作者:IT王子 更新时间:2023-10-29 00:51:44 25 4
gpt4 key购买 nike

我正在尝试使用一些用户对象预先填充数据库,但是当我调用 $user->setPassword('some-password'); 然后保存用户对象时,字符串 'some-password' 直接存储在数据库中,而不是散列+加盐密码。

我的 DataFixture 类:

// Acme/SecurityBundle/DataFixtures/ORM/LoadUserData.php
<?php

namespace Acme\SecurityBundle\DataFixtures\ORM;

use Doctrine\Common\DataFixtures\FixtureInterface;
use Doctrine\Common\Persistence\ObjectManager;

use Acme\SecurityBundle\Entity\User;

class LoadUserData implements FixtureInterface
{
public function load(ObjectManager $manager)
{
$userAdmin = new User();
$userAdmin->setUsername('System');
$userAdmin->setEmail('system@example.com');
$userAdmin->setPassword('test');

$manager->persist($userAdmin);
$manager->flush();
}
}

以及相关的数据库输出:

id  username    email               salt                                password
1 System system@example.com 3f92m2tqa2kg8cookg84s4sow80880g test

最佳答案

由于您使用的是 FOSUserBundle,因此您可以使用 UserManager 来执行此操作。我会使用这段代码(假设你设置了 $this->container):

public function load(ObjectManager $manager)
{
$userManager = $this->container->get('fos_user.user_manager');

$userAdmin = $userManager->createUser();

$userAdmin->setUsername('System');
$userAdmin->setEmail('system@example.com');
$userAdmin->setPlainPassword('test');
$userAdmin->setEnabled(true);

$userManager->updateUser($userAdmin, true);
}

关于php - Symfony2 $user->setPassword() 将密码更新为纯文本 [DataFixtures + FOSUserBundle],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9183368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com