我很难完全理解解释的客户端创建的概念 here 。 我按照帖子设置了 OAuthBundle,并尝试进行所需的更改以符合 FOSUser。虽然我不确定它是否完美。
我的情况
- 我的网站是 RESTFul API,仅返回 json 或 xml。我的前端将使用 AngularJS
- 我组合了 FOSUser、FOSRest 和 FOSOAuth,配置中可能存在错误。
问题
我完成了文章第一部分到 doctrine:schema:update
命令的设置。现在我应该创建一个客户端。
如何为不同角色的 ^/api
部分设置安全性?
示例:
- 匿名用户可以访问 POST
/api/users
,但不能访问 GET/api/users。 - 只有拥有
ROLE_ADMIN
的用户才能访问 DELETE/api/users/{id}
为了进行测试,我使用 Postman (支持 OAuth1 和 2,以及其他身份验证方式)。
最佳答案
在 security.yml 中使用表达式
为了通过(请求)-方法的条件组合来保护某些路由AND (用户)-角色 ...
...您可以使用 Expressions 在您的 security.yml
中。
更多信息可以在文档章节Securing by an Expression中找到。 。
示例
只有具有ROLE_ADMIN
角色的用户才可以使用DELETE
请求访问/api/users/{id}
:
# app/config/security.yml
security:
# ...
access_control:
- path: "^/api/users/\d+$"
allow_if: "'DELETE' == request.getMethod() and has_role('ROLE_ADMIN')"
正则表达式解释
^
开头为\d+
一位或多位数字(= 用户 ID)$
字符串结束
关于symfony - RESTFul OAuth 与 FOSOAuthServer/FOSRest 和 FOSUser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26163889/