第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Symfony 4 EasyAdminBundle:純密碼的編碼和保存問題

Symfony 4 EasyAdminBundle:純密碼的編碼和保存問題

PHP
慕妹3242003 2022-10-22 16:21:38
這些是我使用 Symfony 的第一步。我嘗試在 Symfony 4.4 中使用 Easyadmin Bundle 實(shí)現(xiàn)簡(jiǎn)單的用戶管理。我按照 symfony.com 上的教程進(jìn)行操作,其中大部分工作正常(注冊(cè)表單、后端登錄、后端安全性、數(shù)據(jù)庫(kù)中用戶的后端列表)。我的問題是在 Easyadmin 后端創(chuàng)建和更新用戶。當(dāng)我嘗試創(chuàng)建新用戶時(shí),我看到了正確的字段,我確實(shí)輸入了一些數(shù)據(jù),如果我單擊“保存更改”,則會(huì)引發(fā)以下錯(cuò)誤:An exception occurred while executing 'INSERT INTO app_users (username, email, roles, password, is_active) VALUES (?, ?, ?, ?, ?)' with params ["testname", "test@example.com", "a:1:{i:0;s:9:\"ROLE_USER\";}", null, 1]: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'password' cannot be null列“密碼”不能為空很清楚:我需要為它提供一些編碼的密碼字符串。我認(rèn)為我輸入的純密碼字段中的數(shù)據(jù)沒有被我的用戶實(shí)體中的 setPassword() 方法編碼和/或處理。據(jù)我了解一些 SO 答案和 Symfony 文檔,它應(yīng)該自動(dòng)工作???我不知道。我試圖創(chuàng)建一個(gè)擴(kuò)展 EasyAdminController 的 AdminController 并將其掛接到用戶實(shí)體持久化的某個(gè)地方,但我無(wú)法讓它工作。(像這樣:https ://stackoverflow.com/a/54749433 )如何處理/編碼保存到數(shù)據(jù)庫(kù)中密碼字段的純密碼?
查看完整描述

1 回答

?
LEATH

TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊

我現(xiàn)在可以回答我自己的問題:


解決方案:我只是忘記在 Easyadmin 路由中引用控制器:


# config/routes/easy_admin.yaml

easy_admin_bundle:

    resource: 'App\Controller\AdminController'

    prefix: /admin

    type: annotation

這是針對(duì)有相同問題的每個(gè)人的完整控制器:


// src/Controller/AdminController.php

namespace App\Controller;


use App\Entity\User;

use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;

use EasyCorp\Bundle\EasyAdminBundle\Controller\EasyAdminController;


class AdminController extends EasyAdminController

{

    private $passwordEncoder;


    public function __construct(UserPasswordEncoderInterface $passwordEncoder)

    {

        $this->passwordEncoder = $passwordEncoder;

    }


    private function encodeUserPlainPassword($user)

    {

        $plainPassword = $user->getPlainPassword();


        if (!empty($plainPassword)) {

            $encoded = $this->passwordEncoder->encodePassword($user, $plainPassword);

            $user->setPassword($encoded);

        }

    }


    public function persistEntity($user)

    {

        $this->encodeUserPlainPassword($user);

        parent::persistEntity($user);

    }


    public function updateEntity($user)

    {

        $this->encodeUserPlainPassword($user);

        parent::updateEntity($user);

    }

}


查看完整回答
反對(duì) 回復(fù) 2022-10-22
  • 1 回答
  • 0 關(guān)注
  • 117 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)