使用官方FOSUserBundle存储库中的设置指南中提供的userbundle的默认配置, 你将需要一个用户名, 你的电子邮件和密码, 以便在默认的/ register模块中进行注册。
注册后使用用户名和密码可以轻松实现默认登录。但是, 如果你尝试使用电子邮件登录, 尽管你输入了正确的电子邮件帐户, 但表单的响应将是一个令人不舒服的”凭据无效”错误消息, 该消息将一次又一次地出现。
或者, 如果你的oAuth api使用FOSUserBundle作为默认用户提供程序, 并且你尝试使用grant_type密码(在参数中发送用户凭据), 则会返回身份验证错误消息, 因为你的username参数是用户的电子邮件。
更改security.yml文件(如果使用FOSOAuthServerBundle, 则为config.yml)中的用户提供程序属性, 可以轻松解决此问题。
在security.yml文件的提供程序中更新fos_userbundle属性:
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
然后, 你将能够使用默认或自定义登录表单中的电子邮件和用户名登录。
在config.yml文件的配置中更新user_provider属性。
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令牌grant_type密码)通过身份验证中的用户名或电子邮件(规范电子邮件)登录到你的项目。
评论前必须登录!
注册