我有一个基本的api,使用FOSOAuthServerBundle验证用户.用户可以拥有ROLE_USER和ROLE_ADMIN角色.基于FOSOAuthServerBundle文档,默认行为是使用范围的角色,所以我认为,当我有一个普通用户,捆绑将返回scope: user的响应,并且当它是一个管理员用户,将返回scope: admin.但它不是这样的.捆绑包返回supported_scopes条目中配置的任何内容.以下是我的config.yml.
fos_oauth_server:
service:
options:
supported_scopes: user admin
Run Code Online (Sandbox Code Playgroud)
我的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
Run Code Online (Sandbox Code Playgroud)
这样user admin,即使用户没有ROLE_ADMIN角色,bundle也始终作为作用域返回.
{
"access_token": "ZGQ2ODE5ZjAzNTZkOWY0OWMyNmZmODE4MjcwZTJmYjExNzY0NzQxOTRmMzk4NzA2Mjc2NjIyZmY1ZDgwMzk4NA"
"expires_in": 3600
"token_type": "bearer"
"scope": "user admin"
"refresh_token": "NmM5ZGFmNzBiNTNjYmQzMTQ1MTk0ODJjOTAxMWU0YWIwMzM1MzgyODg4ZTAzNTI5ZTk2MDc3OGU2MTg0MWZiMA"
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么?用户角色是否附加到令牌范围?有没有更好的方法来了解我的用户是否是管理员?
如何为任何用户获取安全令牌,而不仅仅是当前登录的用户?
我希望能够从从数据库中提取的用户调用isGranted()