Я следую этому руководству (Как аутентифицировать пользователей с помощью ключей API) для реализации ключей API в моем приложении.
Я использую свой класс пользовательского репозитория, который был создан на основе этого tutorial (Как загрузить пользователей безопасности из базы данных) в качестве поставщика пользователей, необходимого в процессе предварительной аутентификации, поскольку этот класс уже имеет методы, описанные как необходимые от поставщика пользователей в учебнике. Я слежу, а именно loadUserByUsername()
, refreshUser()
и supportsClass()
.
Symfony вызывает мою службу apikey_authenticator
, которая требует провайдера пользователя в качестве аргумента. Из-за этого я настроил другую службу под названием userprovider
, которая является моим классом пользовательского репозитория, например:
services:
apikey_authenticator:
class: MyBundle\Security\ApiKeyAuthenticator
arguments: ["@userprovider"]
userprovider:
class: MyBundle\Entity\UserRepository
Но мой класс пользовательского репозитория зависит от диспетчера сущностей, который я не знаю, как внедрить. Конфигурация моей доктрины — это конфигурация по умолчанию, которая поставляется с symfony:
# Doctrine Configuration
doctrine:
dbal:
driver: "%database_driver%"
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
orm:
auto_generate_proxy_classes: "%kernel.debug%"
auto_mapping: true
Как я могу это решить? И стоит ли в этом случае использовать класс пользовательского репозитория в качестве провайдера пользователя?