我很难完全理解这里解释的客户端创建的概念。我按照帖子设置了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[用户]-角色的条件组合来保护某些路由。。。
您可以在security.yml
中使用表达式。
有关详细信息,请参阅文档章节通过表达式进行安全保护。
示例
只有角色为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')"
Regex解释
^
以d+
一个或多个数字(=用户id)$
字符串结束