我已经设置了 OAuth [使用 FOSOauthServerBudle]。我正在设置密码类型流程。
我可以获得客户端类型的访问令牌,但使用密码类型会出错。
错误:在非对象上调用成员函数 loadUserByUsername()
进一步来说
$user = $this->userProvider->loadUserByUsername($username); <-OAuthStorage.php 在第 161 行
/oauth/v2/token?client_id=[CLIENTID]&client_secret=[CLIENTSECRET]&grant_type=password&username=test&password=test
所以没有为 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 ] }
你们觉得怎么样。有任何想法吗?