未定义的方法 'encodePassword'。 - Apiplateform 安全编码器中的错误未定义

Undefined method 'encodePassword'. - error in Apiplateform security encoder undefined

我的 symfony 安全性 api 在服务 PasswordService 中有问题。找不到编码器

我猜不出我该怎么做。 这是我的 security.yaaml 文件:

这是我的代码:

<?php

namespace App\Services;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;


class PasswordService
{
    /**
     * @var PasswordService
     */
    private $userPasswordEncoder;

    /**
     * @param UserPasswordEncoderInterface $userPasswordEncoder
     */
    public function __construct(UserPasswordEncoderInterface $userPasswordEncoder)
    {
        $this->userPasswordEncoder = $userPasswordEncoder;
    }

    /**
     * @param object $entity
     * @param string $password
     * @return string
     */
    
    public function encode(object $entity, string $password): string
    {
        return $this->userPasswordEncoder->encodePassword($entity, $password);
    }

    /**
     * @param string $password
     * @return int
     */
    public function formatRequirement(string $password)
    {
        return preg_match('#^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*\W)#', $password);
    }

    /**
     * @param object $entity
     * @param string $password
     * @return bool
     */
    public function isValid(object $entity, string $password): bool
    {
        return $this->userPasswordEncoder->isPasswordValid($entity, $password);
    }
}

没有真正的错误你只是在这里有一个错误的注释:

/**
 * @var PasswordService <========
 */
private $userPasswordEncoder;

如果你删除它,应该没问题。 (或替换为UserPasswordEncoderInterface)