0

我开发了一个 APIRest 服务来使用来自移动应用程序的数据。我使用了 Symfony2 包:FOSOAuthServerBundle、FOSUserBundle 和 FOSRestBundle,一切正常,但我需要区分管理面板用户和 api 用户,因为现在如果我尝试通过应用程序的管理员进行身份验证,我将获得一个令牌但是我只想用api用户获得一个有效的。

例如,对于下一个用户,我应该在第二个请求中获得一个有效的令牌,而在第一个请求中获得一个无效的授权响应,但我对他们两个都获得了一个有效的令牌:

管理员用户 (ROLE_ADMIN)

https://app.myweb.com/oauth/v2/token?username=adminuser&password=12345&client_id=...&client_secret=...&grant_type=password

应用用户 (ROLE_APP)

https://app.myweb.com/oauth/v2/token?username=appuser&password=12345&client_id=...&client_secret=...&grant_type=password

非常感谢您让我以正确的方式解决这个问题,并为我的英语感到抱歉。

4

1 回答 1

0

来自 FOSOAuthServerBundle 文档:

https://github.com/FriendsOfSymfony/FOSOAuthServerBundle/blob/master/Resources/doc/index.md#step-5-configure-fosoauthserverbundle

创建一个用户提供者并将其添加到 fos_oauth_server 配置中:

fos_oauth_server:
    ...
    service:
        user_provider: my_custom_user_provider_service

创建扩展 Symfony\Component\Security\Core\User\UserProviderInterface 接口的提供程序,并检查用户是否已授予 ROLE_APP。记录在这里:

http://symfony.com/doc/current/cookbook/security/custom_provider.html

于 2014-11-18T11:00:53.983 回答