我已经设置了OAuth [使用FOSOauthServerBudle]。我正在设置密码类型流程。
我可以获得具有客户端类型的访问令牌,但使用密码类型我会收到错误。
错误:在非对象
上调用成员函数loadUserByUsername()
更具体地说
$ user = $ this-> userProvider-> loadUserByUsername($ username); < -OAuthStorage.php在第161行
/的OAuth / V2 /令牌的client_id = [客户端ID]&安培; client_secret = [CLIENTSECRET]&安培; grant_type =密码&安培;用户名=试验&安培;密码=测试
因此没有为OAuthStorage设置用户提供程序。我无法找到有关如何为此设置提供程序的任何好文档。
我的安全问题
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
user_provider:
id: fos_user.user_provider.username_email
firewalls:
dev:
pattern: ^/(_(profiler|wdt|error)|css|images|js)/
security: false
oauth_token:
pattern: ^/oauth/v2/token
security: false
oauth_authorize:
pattern: ^/oauth/v2/auth
form_login:
provider: user_provider
check_path: _security_check
login_path: _demo_login
anonymous: true
api:
pattern: ^/api
fos_oauth: true
stateless: true
access_control:
# You can omit this if /api can be accessed both authenticated and anonymously
- { path: ^/api, roles: [ IS_AUTHENTICATED_FULLY ] }
你觉得伙计们怎么样?有什么想法吗?
答案 0 :(得分:1)
尤里卡!
显然,提供程序是在config.yml中配置的。我把它设置为以前的自定义用户提供程序。我将它设置为security.yml中指定的同一个提供程序,一切正常。