【问题标题】:What's the best way to filter resources in RESTful API by user permission?按用户权限过滤 RESTful API 中的资源的最佳方法是什么?
【发布时间】:2017-05-08 05:18:52
【问题描述】:

假设我们有两种用户,管理员和标准用户。

我们有一个名为post 的资源。对于 GET 方法,我希望管理员查看所有帖子,但标准用户只能查看 post.created_by={currentUserID} 的帖子。

现在我有三个选择:

  • 使用/api/post/api/mypost。好处是我可以轻松控制返回的结果并根据用户范围分配不同的权限。缺点是我会重复代码和文档。

  • 对两者都使用/api/post,对于标准用户,如果没有?createdBy={id},则拒绝该请求。

  • 两者都使用/api/post,但该方法的行为会因身份验证而异。对于标准用户,返回的列表总是被过滤。对于/api/post/{id},它将为不属于用户的帖子返回 HTTP 403。

我应该选择哪一个?

【问题讨论】:

    标签: rest api oauth scope authorization


    【解决方案1】:

    第一个选项并不理想,因为(正如您所说),它容易出现代码重复。

    如果第二个不仅适用于 currentUserID,那么它也可以正常工作。

    但是,鉴于您必须以任何一种方式进行身份验证,我会选择第三个选项,因为它可能是最普遍的解决方案。不同的用户根据他们的权限/投资组合看到不同的东西,以一种干净的方式,没有弄乱 url 的查询字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-22
      • 1970-01-01
      • 2021-02-02
      • 1970-01-01
      • 2018-06-07
      • 1970-01-01
      • 1970-01-01
      • 2019-12-28
      相关资源
      最近更新 更多