エラーが発生しています:
クラス 'App\Entity\User' はチェーン構成された名前空間で見つかりませんでした
API プラットフォームで Symfony 4.2 を実行しています。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()
{
}
}
オーセンティケータ:
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);
}
...
}
セキュリティ.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
ここでエラーが発生します:
$userProvider->loadUserByUsername($apiKey) を返します。
それをたどった後、ドライバーのロードに失敗しましたが、この問題を修正する方法がわかりません。ありがとう!