我们正在尝试使用用户访问控制来实现RestAPI,其中相同的URI应该为具有不同角色的两个用户返回不同的响应。比如说,响应URI(/ resource / 123)
{
"customer_name":"user_name", #String
"location":"000", #String
"age":30 #Int
"has_submitted_tax":true #Boolean
}
如何根据角色隐藏每个属性。
隐藏用户不应该访问的节点
问题:这将破坏响应结构。客户端可能会中断,因为预期的节点会被遗漏。
为该节点返回null。
问题:这会破坏响应数据类型。作为一个布尔'节点将具有空值。
返回该节点的默认值。
问题:这里节点将有一些值,其中为节点返回实际值的机会相等。(默认值是实际值)
答案 0 :(得分:1)
没有正确或错误的答案。这一切都取决于客户和服务之间的合同。当您为例如合同定义时getCustomer(),然后该合同将规定
总结了你的3种方法。只要客户知道你采取了哪种策略,那就没关系了。
如果您将授权应用于具有大量期望某种行为的客户端的现有API,那么您最好的选择是使用具有默认值的替换值的掩码值。风险并不是说默认值可能是真实的,而是最终用户不知道信息已被屏蔽。