Я сталкиваюсь с ошибкой:
Класс 'App \ Entity \ User' не найден в пространствах имен, сконфигурированных для цепочки
Я использую Symfony 4.2 с платформой API. Мне нужно создать настройку аутентификации токена / ключа API, и я использую сторожевой аутентификатор.
Организация:
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\UserInterface;
/**
* @ORM\Entity(repositoryClass="App\Repository\UserRepository")
* @ORM\Table(name="arc_sync_api_keys")
*/
class User implements UserInterface
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
public $id;
/** @ORM\Column(length=20) */
public $username;
/** @ORM\Column(name="api_token", length=40) */
public $apiKey;
/** @ORM\Column(length=30) */
public $roles = [];
public function getUsername(): string
{
return $this->username;
}
public function getRoles(): array
{
return array('ROLE_USER');
}
public function getPassword()
{
}
public function getSalt()
{
}
public function eraseCredentials()
{
}
}
Authenticator:
namespace App\Security;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
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\AbstractGuardAuthenticator;
class ApiKeyAuthenticator extends AbstractGuardAuthenticator
{
...
public function getUser($credentials, UserProviderInterface $userProvider)
{
$apiKey = $credentials['token'];
if (null === $apiKey) {
return;
}
// if a User object, checkCredentials() is called
return $userProvider->loadUserByUsername($apiKey);
}
...
}
security.yaml
security:
providers:
# used to reload user from session & other features (e.g. switch_user)
app_user_provider:
entity:
class: App\Entity\User
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
anonymous: ~
logout: ~
guard:
authenticators:
- App\Security\ApiKeyAuthenticator
Ошибка происходит здесь:
return $ userProvider-> loadUserByUsername ($ apiKey);
после прохождения через него не удается загрузить драйвер, но я не знаю, как решить эту проблему. Спасибо!