2

我很难完全理解这里解释的客户端创建的概念。我按照帖子设置了 OAuthBundle,并尝试进行所需的更改以符合 FOSUser。虽然我不确定它是否完美。

我的情况

  • 我的网站是一个 RESTFul API,它只返回 json 或 xml。我的前端将在 AngularJS 中
  • 我结合了 FOSUser、FOSRest 和 FOSOAuth,我可能在配置中有错误。

问题

我完成了文章的第一部分的设置doctrine:schema:update。现在我应该创建一个客户端。

如何^/api为不同角色的部分设置安全性?

例子:

  • 匿名用户可以访问 POST/api/users但不能访问 GET /api/users。
  • 只有具有ROLE_ADMINDELETE 权限的用户才能访问/api/users/{id}

对于测试,我使用的是Postman(支持 OAuth1 和 2,以及其他身份验证方式)。

4

1 回答 1

3

在 security.yml 中使用表达式

为了通过(请求)-方法 (用户) -角色的条件组合来保护某些路由...

...您可以在security.yml.

更多信息可以在文档章节Securing by an Expression中找到。

例子

只有具有角色的用户ROLE_ADMIN才能/api/users/{id}使用DELETE请求访问:

# app/config/security.yml
security:
    # ...
    access_control:
        - path: "^/api/users/\d+$"
          allow_if: "'DELETE' == request.getMethod() and has_role('ROLE_ADMIN')"

正则表达式解释

  • ^开始于
  • \d+一位或多位数字(= 用户 ID)
  • $字符串结束
于 2014-10-02T16:31:08.123 回答