1

[ FOSOauthServerBudle を使用して] OAuth をセットアップしました。パスワードタイプのフローの設定に取り組んでいます。

クライアント型でアクセストークンを取得できますが、パスワード型を使用するとエラーになります。

エラー: オブジェクト以外でのメンバー関数 loadUserByUsername() の呼び出し

すなわち

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

/oauth/v2/token?client_id=[CLIENTID]&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 ] }

どう思いますか。何か案は?

4

1 に答える 1

1

ユーレカ!

どうやらプロバイダは config.yml で設定されているようです。以前のカスタム ユーザー プロバイダーに設定しました。security.yml で指定されているものと同じプロバイダーに設定すると、すべて正常に動作します。

于 2015-08-20T22:53:08.380 に答える