Symfony 3.3 автозагрузчик ожидаемого класса - PullRequest
0 голосов
/ 03 декабря 2018

У меня проблема с моим проектом Symfony.Я пытаюсь поставить форму аутентификатора входа в систему и для этого мне нужно создать хранилище моего пользовательского класса.Тем не менее, я получил эту ошибку:

Ожидается, что автозагрузчик класса "AppBundle \ Repository \ UserRepository" будет определен в файле "C: \ wamp64 \ www \ Symfony \ vendor \ composer /../ ../src\AppBundle\Repository\UserRepository.php».Файл был найден, но класса в нем нет, вероятно, имя класса или пространство имен содержит опечатку.

Вот мой класс UserRepository:

<?php
namespace AppBundle\Repository;

use Doctrine\Bundle\DoctrineBundle\Repository\EntityRepository;
use AppBundle\Entity\User;


class UserRepository extends EntityRepository
{

    public function findAllOrderedByName()
    {
        return $this->getEntityManager()
            ->createQuery(
                'SELECT u FROM AppBundle:User u ORDER BY u.username ASC'
            )
            ->getResult();
    }
}

?>

Сущность My User:

<?php
namespace AppBundle\Entity;

use Symfony\Component\Security\Core\User\UserInterface;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass="AppBundle\Repository\UserRepository")
 * @ORM\Table(name="user")
 */
class User implements UserInterface
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", unique=true)
     */
    private $username;

    /**
     * @ORM\Column(type="string", unique=true)
     */
    private $apiKey;

     /**
     * @ORM\Column(type="string", length=64)
     */
    private $password;

    public function getId()
    {
        return $this->id;
    }

    public function getUsername()
    {
        return $this->username;
    }

    public function getPassword()
    {
        return $this->password;
    }

    public function getApiKey()
    {
        return $this->apiKey;
    }

    public function getRoles()
    {
        return array('ROLE_USER');
    }

    public function getSalt()
    {
    }
    public function eraseCredentials()
    {
    }

    public function setUsername($_username)
    {
        $this->username = $_username;
    }

    public function setPassword($_password)
    {
        $this->password = $_password;
    }


    public function setId($_id)
    {
        return $this->id = $_id;
    }

    public function setApiKey($_apiKey)
    {
        return $this->apiKey = $_apiKey;
    }
}
?>

Мой security.yml:

security:
    encoders:
        AppBundle\Entity\User:
            algorithm: bcrypt

    providers:
        our_db_provider:
            entity:
                class: AppBundle:User
                property: username


    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            guard:
                authenticators:
                    - AppBundle\Security\LoginFormAuthenticator

И наконец мой FormLoginAuthenticator:

<?php
namespace AppBundle\Security;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Core\Exception\AuthenticationException;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\User\UserProviderInterface;
use Symfony\Component\Security\Guard\Authenticator\AbstractFormLoginAuthenticator;
use AppBundle\Repository\UserRepository;

class LoginFormAuthenticator extends AbstractFormLoginAuthenticator
{
    private $userRepository;

    public function __construct(UserRepository $userRepository)
    {
        $this->userRepository = $userRepository;
    }
    public function supports(Request $request)
    {
            return $request->attributes->get('_route') === 'app_login'
            && $request->isMethod('POST');

    }
    public function getCredentials(Request $request)
    {
               return [
            'username' => $request->request->get('username'),
            'password' => $request->request->get('password'),
        ];
    }
    public function getUser($credentials, UserProviderInterface $userProvider)
    {
        return $this->userRepository->findOneBy(['username' => $credentials['username']]);
    }
    public function checkCredentials($credentials, UserInterface $user)
    {
          die($user);
    }

    public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey)
    {
        // todo
    }

    protected function getLoginUrl()
    {
        // TODO: Implement getLoginUrl() method.
    }

}
?>

Заранее благодарим вас за помощь.Кроме того, если у вас есть лучшее решение для создания моего аутентификатора формы, это будет очень приятно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...