使用官方FOSUserBundle存储库中的设置指南中提供的userbundle的默认配置, 你将需要一个用户名, 你的电子邮件和密码, 以便在默认的/ register模块中进行注册。
注册后使用用户名和密码可以轻松实现默认登录。但是, 如果你尝试使用电子邮件登录, 尽管你输入了正确的电子邮件帐户, 但表单的响应将是一个令人不舒服的”
凭据无效”
错误消息, 该消息将一次又一次地出现。
【如何在Symfony中使用FOSUserBundle和FOSOAuthServerBundle启用电子邮件和用户名登录】或者, 如果你的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密码)通过身份验证中的用户名或电子邮件(规范电子邮件)登录到你的项目。
推荐阅读
- 如何在WinForms C#中使用NAudio将MP3文件转换为WAV
- 如何使用Twig获取路径,实际路由和主机域的规范URL
- Web Api(Symfony 2或3和预检的Angular响应具有无效的HTTP状态代码403)
- 如何在Symfony 3中创建依赖选择(依赖下拉列表)
- 如何使用PHP根据日期计算年龄
- IN3026 游戏技术
- android studio NDK上的turbo c ++ graphics.h程序
- Android Things(支持NDK吗( [关闭]))
- 无法配置NDK android studio并获取错误