RESTFul OAuth与FOSOAuthServer / FOSRest& FOSUser

时间:2014-10-02 15:09:04

标签: symfony fosuserbundle fosrestbundle fosoauthserverbundle

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

我的情况

  • 我的网站是RESTFul API,仅返回json或xml。我的前端将在AngularJS
  • 我结合了FOSUser,FOSRest和FOSOAuth,我可能在配置中遇到错误。

问题

我完成了文章的第一部分,直到doctrine:schema:update命令。现在我应该创建一个客户端。

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

示例:

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

测试我正在使用Postman(支持OAuth1& 2,以及其他auth方法)。

1 个答案:

答案 0 :(得分:3)

在security.yml中使用表达式

为了通过(请求)-method AND (用户)-role 的条件组合来保护某些路线...... < / p>

...您可以在security.yml中使用 Expressions

更多信息可在文档章节 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)
  • $ string end