FOSOAuthServerBundleを使ってユーザーを認証する基本的なAPIがあります。ユーザーはROLE_USERロールとROLE_ADMINロールを持つことができます。 FOSOAuthServerBundleドキュメントに基づいて、デフォルトの動作はスコープをロールとして使用するため、通常のユーザーがいるときはバンドルはscope: user
を応答に返し、管理ユーザーの場合はscope: admin
を返します。しかし、このようには機能しません。バンドルは、supported_scopes
のエントリに設定されているものを返します。以下は私のconfig.yml
です。ROLESとFOSOAuthServerBundleスコープの処理方法
fos_oauth_server:
service:
options:
supported_scopes: user admin
security.yml
マイaccess_control
セクション空で、私のfirewalls
セクションでは、以下の通りです:
firewalls:
users_create:
pattern: ^/v1/users
methods: [POST]
security: false
api:
pattern: ^/
security: true
fos_oauth: true
stateless: true
access_control:
# You can omit this if /api can be accessed both authenticated and anonymously
この方法でバンドルには、常にユーザーがROLE_ADMINの役割を持っていない場合でも、スコープとしてuser admin
を返します。
{
"access_token": "ZGQ2ODE5ZjAzNTZkOWY0OWMyNmZmODE4MjcwZTJmYjExNzY0NzQxOTRmMzk4NzA2Mjc2NjIyZmY1ZDgwMzk4NA"
"expires_in": 3600
"token_type": "bearer"
"scope": "user admin"
"refresh_token": "NmM5ZGFmNzBiNTNjYmQzMTQ1MTk0ODJjOTAxMWU0YWIwMzM1MzgyODg4ZTAzNTI5ZTk2MDc3OGU2MTg0MWZiMA"
}
私は何が欠けていますか?ユーザー役割がトークンスコープに接続されていませんか?私のユーザーが管理者であるかどうかを知る良い方法はありますか?
あなたの 'security.yml'でないかもしれないし、' config.yml'からペーストしているのでしょうか? 'security.yml'から' access_control: 'セクションを提供できますか? –
あなたは正しいIllyaです。私の質問を編集する。 –