【发布时间】:2015-10-14 03:32:58
【问题描述】:
如果您有 REST API 即 hypermedia-driven (HATEOAS),您可以通过在响应中包含或省略链接来轻松更改客户的行为 (_links)。这使客户端能够完全忘记测试在 resource 的当前状态下可能执行的操作的权限(操作的链接是否存在)。
此外,如果当前用户无权查看,您可以在响应中省略属性。
这样授权完全在服务器上完成(并控制有资格执行/查看的操作和属性)。
但是如果我想要一个 read-only 属性怎么办? REST API 忽略请求中存在的属性是没有问题的(_POST_ 或 _PUT_)。它只是不会被保存。但是客户端如何区分 write 和 read-only 属性以向用户呈现适当的控件(例如 HTML 中的禁用输入字段)?
我们的目标是永远不要拥有client request 用户的权限,而是拥有完全由资源驱动的client/frontend。
非常感谢任何帮助:-)
【问题讨论】:
-
由于您的响应可能基于某些文档格式(XML 和 JSON 相当通用;更专业的更可取,扩展一个并不难),请使用一些描述您的文档格式的模式定义什么是强制性的,什么是可选的,什么是只读的
-
好的,我明白你的意思,但我的意思是根据用户的权限,属性可以是可写、只读或不存在。所以架构是动态的
-
我会将支票留在服务器端,并为某些角色返回专门的文档格式。如果属性是只读的、可选的或最终客户端响应的强制属性,则文档格式的模式包含必要的信息。请注意,不同角色的文档格式不必相同。它可以是子集、超集或与某些基本角色相比完全不同的东西。
标签: rest spring-mvc hateoas spring-hateoas hypermedia