С конфигурацией по умолчанию вашего userbundle, доступной в руководстве по установке в официальном репозитории FOSUserBundle, вам потребуется имя пользователя, ваш адрес электронной почты и пароль, чтобы зарегистрироваться в модуле default / register.
Вход в систему по умолчанию после вашей регистрации может быть легко достигнут с помощью имени пользователя и пароля. Но если вы попытаетесь войти по электронной почте, ответом вашей формы будет неудобное сообщение об ошибке «учетные данные неверны», хотя при вводе правильной учетной записи электронной почты это сообщение будет появляться снова и снова.
Или, если ваш oAuth api использует FOSUserBundle в качестве провайдера пользователя по умолчанию, и вы пытаетесь использовать пароль grant_type (отправка учетных данных пользователя в параметрах), возвращается сообщение об ошибке аутентификации, поскольку ваш параметр username является адресом электронной почты пользователя.
Эта проблема может быть легко решена изменением свойства провайдера пользователя в вашем security.yml
файл (и config.yml
если вы используете FOSOAuthServerBundle).
FOSUserBundle
Обновите свойство fos_userbundle в поставщиках вашего security.yml
файл:
security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
fos_userbundle:
# Your id property should look like :
# id: fos_user.user_provider.username
# Change to
id: fos_user.user_provider.username_email
После этого вы сможете войти с электронной почтой и именем пользователя из стандартных или настроенных форм входа.
FOSOAuthServerBundle
Обновите свойство user_provider в конфигурации config.yml
файл.
fos_oauth_server:
db_driver: orm
client_class: easymedic\apiBundle\Entity\Client
access_token_class: easymedic\apiBundle\Entity\AccessToken
refresh_token_class: easymedic\apiBundle\Entity\RefreshToken
auth_code_class: easymedic\apiBundle\Entity\AuthCode
# Your actual service> user_provider property, should look like
#service:
# user_provider: fos_user.user_provider.username
# Change it for
service:
user_provider: fos_user.user_provider.username_email
Затем вы сможете войти в свой проект с именем пользователя или электронной почтой (канонической электронной почтой) в аутентификации через API (пароль oauth tokens grant_type).