我开发了一个APIRest服务来使用移动应用程序中的数据。我已经使用了Symfony2捆绑包:FOSOAuthServerBundle、FOSUserBundle和FOSRestBundle,它们都运行良好,但我需要区分管理面板用户和api用户,因为现在如果我尝试从应用程序向管理员进行身份验证,我将获得一个令牌,但我只想获得一个与api用户有效的令牌。
例如,对于下一个用户,我应该获得第二个请求的有效令牌和第一个请求的无效授权响应,但我获得了他们两个的有效令牌:
管理员用户(ROLE_ADMIN)
https://app.myweb.com/oauth/v2/token?username=adminuser&密码=1234&client_id=&client_secret=&grant_type=密码
appuser(ROLE_APP)
https://app.myweb.com/oauth/v2/token?username=appuser&密码=1234&client_id=&client_secret=&grant_type=密码
非常感谢你让我找到了解决这个问题的正确方法,并为我的英语感到抱歉。
来自FOSOAuthServerBundle文档:
https://github.com/FriendsOfSymfony/FOSOAuthServerBundle/blob/master/Resources/doc/index.md#step-5-配置-授权服务器捆绑
创建一个用户提供程序并将其添加到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