如何将提供者设置为oauth令牌



我设置了OAuth[使用fosoauthserverbundle]。我正在设置一个密码类型流。

我可以获得客户端类型的访问令牌,但使用密码类型我得到一个错误。

错误:在非对象上调用成员函数loadUserByUsername()

更具体地说

$user = $this->userProvider->loadUserByUsername($username);<-OAuthStorage.php第161行

/oauth/v2/令牌? client_id = [CLIENTID], client_secret = [CLIENTSECRET], grant_type = password&用户名= test&密码=测试

所以OAuthStorage没有用户提供商设置。我找不到关于如何为此设置提供者的任何好的文档。

My security conf

encoders:
    FOSUserBundleModelUserInterface: 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 ] }

你们觉得呢?什么好主意吗?

找到了!

提供者显然是在config.yml中配置的。我把它设置为以前的自定义用户提供程序。我将其设置为与security中指定的相同的提供程序。Yml和一切工作都很好。

相关内容

  • 没有找到相关文章