根据Roy的Hypermedia作为应用程序状态(Hypermedia)的引擎,每个资源应该与可以在该资源上执行的操作(或链接)列表相结合。
如果这些操作包含在实体中(用于使用Json的links属性),我如何告诉用户代理,通过身份验证的用户无法使用特定的选项?
后端可以进行过滤,但是相同的资源URL可能有不同的表示形式,这取决于经过身份验证的用户。这似乎并不是对休息和缓存友好的。
另一种选择是保留所有链接,并让用户代理在认证用户不可用的操作不可用时接收403 Forbidden。这对用户来说可能很烦人。
在保持REST友好的同时,如何通知用户代理可用的操作时,这些操作可以根据身份验证的用户进行更改?
发布于 2014-01-09 02:43:16
你是对的。根据用户权限创建不同表示形式并不是特别友好的缓存。是否有可能将权限变体划分为几个类别?例如资源-低安全性,资源-中度-安全资源-高安全性
有时这种方法是可能的,有时是不可能的。需要考虑的另一个方面是缓存对于这个特定资源是否至关重要。也许是现在?
此外,不需要等到用户单击链接才能确定用户是否有权限遵循链接。客户端可以对背景中的链接执行选项请求,以发现哪些链接可用,并动态禁用不可访问的链接。
这个问题没有一个单一的答案。根据不同的需求,不同的解决方案将在不同的情况下起作用。
发布于 2018-11-01 11:17:56
假设REST是一个供机器人浏览的网站。
网站是否返回包含不允许查看的链接的HTML资源(页面)?
不管它有没有,它都不会改变网站的“超级媒体”。
但是,相同的资源URL可能有不同的表示形式,这取决于经过身份验证的用户
考虑一下网站的主页也是如此。资源是概念性的,主页是概念,看起来是变化的。
web如何处理为登录和注销视图缓存页面?
第一种方法是阻止对这些资源的缓存;并不是所有的东西都必须是可寻址的,约束就是可以相应地标记资源。
第二种是使用控制语义,如果REST使用HTTP,则使用头。
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Vary
https://stackoverflow.com/questions/21007540
复制相似问题