У меня есть базовый api, который проверяет подлинность пользователей с помощью FOSOAuthServerBundle. Пользователи могут иметь роли ROLE_USER и ROLE_ADMIN. Основываясь на документах FOSOAuthServerBundle, поведение по умолчанию заключается в использовании областей в качестве ролей, поэтому я подумал, что когда у меня есть обычный пользователь, этот пакет вернет scope: user
в ответ, а когда он станет пользователем администратора, вернется scope: admin
. Но это не так. Пакет возвращает все, что настроено в записи supported_scopes
. Ниже мой config.yml
.Как справиться с областями ROLES и FOSOAuthServerBundle
fos_oauth_server:
service:
options:
supported_scopes: user admin
Мой access_control
раздел в security.yml
пуст, и мой 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
Таким образом, расслоение всегда возвращают user admin
в области видимости, даже если пользователь не имеет роли ROLE_ADMIN.
{
"access_token": "ZGQ2ODE5ZjAzNTZkOWY0OWMyNmZmODE4MjcwZTJmYjExNzY0NzQxOTRmMzk4NzA2Mjc2NjIyZmY1ZDgwMzk4NA"
"expires_in": 3600
"token_type": "bearer"
"scope": "user admin"
"refresh_token": "NmM5ZGFmNzBiNTNjYmQzMTQ1MTk0ODJjOTAxMWU0YWIwMzM1MzgyODg4ZTAzNTI5ZTk2MDc3OGU2MTg0MWZiMA"
}
Что мне счесть? Разве пользовательская роль не связана с областью токена? Есть ли лучший способ узнать, является ли мой пользователь администратором или нет?
Возможно, это не ваш 'security.yml', и это вставка из' config.yml'? Не могли бы вы предоставить раздел 'access_control:' из 'security.yml'? –
Ты прав Илья. Редактирование моего вопроса. –