gpt4 book ai didi

Symfony 4 EasyAdmin 如何加密密码?

转载 作者:行者123 更新时间:2023-12-01 11:14:20 25 4
gpt4 key购买 nike

我正在使用 EasyAdmin 来添加/编辑用户,想问一下是否有可能加密您的密码?
密码加密以前在我使用 Symfony 4 make:registration-form 时有效,但现在不能使用,我必须使用 EasyAdmin。

easy_admin.yaml

easy_admin:
entities:
User:
class: App\Entity\User
password_encoding: { algorithm: 'bcrypt', cost: 12 }

(实际)我进入EasyAdmin页面(/admin),点击User,Add User,填写email(test@gmail.com)和密码(test),点击Save Changes。

现在用户存储在数据库中,但使用明文密码。
enter image description here

(预期)以上所有但密码都是加密的。

最佳答案

与 Symfony 5 兼容的新版本:

<?php

namespace App\Controller;

use App\Entity\User;
use Symfony\Component\Security\Core\Encoder\EncoderFactory;
use Symfony\Component\Security\Core\Encoder\MessageDigestPasswordEncoder;
use EasyCorp\Bundle\EasyAdminBundle\Controller\EasyAdminController;

class AdminController extends EasyAdminController
{
protected function persistUserEntity($user)
{
$encodedPassword = $this->encodePassword($user, $user->getPlainPassword());
$user->setPassword($encodedPassword);

parent::persistEntity($user);
}

protected function updateUserEntity($user)
{
$encodedPassword = $this->encodePassword($user, $user->getPlainPassword());
$user->setPassword($encodedPassword);

parent::updateEntity($user);
}

private function encodePassword($user, $password)
{
$passwordEncoderFactory = new EncoderFactory([
User::class => new MessageDigestPasswordEncoder('sha512', true, 5000)
]);

$encoder = $passwordEncoderFactory->getEncoder($user);

return $encoder->encodePassword($password, $user->getSalt());
}
}

关于Symfony 4 EasyAdmin 如何加密密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54744836/

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