加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

Web服务 – 基于用户查看权限的不同的REST资源内容

发布时间:2020-12-14 21:35:57 所属栏目:资源 来源:网络整理
导读:我想根据访问权限为不同用户提供与同一问题不同的答案。我读了这个问题: Excluding private data in RESTful response 但是我不同意接受的答案,其中声明您应该提供/people.xml和/unauthenticated/people.xml,因为我对REST的理解是,特定的资源应该存在于
我想根据访问权限为不同用户提供与同一问题不同的答案。我读了这个问题:

Excluding private data in RESTful response

但是我不同意接受的答案,其中声明您应该提供/people.xml和/unauthenticated/people.xml,因为我对REST的理解是,特定的资源应该存在于特定位置,而不是几个依赖关于你感兴趣的信息量。

我正在设计的系统比那个更复杂。假设用户创建了一些朋友圈子,并为其分配了不同的访问权限。例如,我的“熟人”圈子可能会访问我的生日,而我的“专业”圈子可能会访问我的就业历史,而不是相反。为了应用我提到的问题的答案,我需要一种方法来获取所有的用户圈子(我可能希望为安全起见保密),然后通过/ circles / a / users / 42 ,/ circles / b / users / 42,/ circles / c / users / 42等等,然后合并结果以显示最大可用信息量。显然,没有一个单一的圈子可以获得任何其他圈子获得的所有信息。我相信这很棘手(请注意,我可能需要使用几种对象来做到这一点,未来版本可能需要不同的过程),但是如果我想对特定用户强加安全限制,尽管他也是在我的一些圈子里这个问题甚至可以解决吗?即使我拒绝回应任何上述的查询,并提出一个可以给我答案的新的查询,它仍然会揭示出这一特定用户由于个人访问限制而受到不同的对待。

我在这里缺少什么?我甚至可以开发一个RESTful Web服务?

如果结论是行为不是RESTful的,那么这仍然构成了破坏REST合同在道德上是可行的情况吗?如果是这样,有什么负面影响?我有风险代理缓存问题吗?

解决方法

据Fielding的论文(这真的是一个很好的写作):

A resource is a conceptual mapping to a set of entities,not the entity that corresponds to the mapping at any particular point in time.

换句话说,如果您有一个被定义为“请求用户的分配的项目”的资源,以及可以通过/项目的URI访问的表示,则您不会通过返回一个项目列表(即表示)来违反REST的任何限制,对于用户A和用户B的另一(表示),当它们获得相同的URI时。这样,界面是统一/一致的。

除此之外,REST仅规定了响应中包含显式缓存指令,无论是“缓存长时间”还是“根本不缓存”:

Cache constraints require that the data within a response to a request be implicitly or explicitly labeled as cacheable or non-cacheable.

您如何选择管理由您决定。

牢记这一点,

只要您不违反统一接口的约束,您应该感觉到可以根据用户请求特定资源的表示而返回不同的资源的表示 – 不要使用单个资源标识符来返回表示不同的资源。

如果它有帮助,请考虑服务器以不同的资源表示方式进行响应 – XML或JSON,法语或英语等。与请求一起发送的凭据只是服务器能够用于确定哪些表示形式发送回应。那是标题部分。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读