当前位置: 首页 > 知识库问答 >
问题:

如何根据RestAPI中的角色控制响应属性?

柴良哲
2023-03-14

我们尝试使用用户访问控制实现 RestAPI,其中相同的 URI 应为具有不同角色的两个用户返回不同的响应。比如说,对 URI 的响应(/resource/123)

{
    "customer_name":"user_name", #String
    "location":"000", #String
    "age":30 #Int
    "has_submitted_tax":true #Boolean
}

如何根据角色隐藏每个属性。

隐藏用户不应访问的节点

问题:这会破坏响应结构。客户端可能会中断,因为预期的节点会被遗漏。

为该节点返回 null。

问题:这将破坏响应数据类型。因为“布尔”节点将具有空值。

返回该节点的默认值。

问题:这里的节点将有一些值,其中有一个相等的机会为节点返回实际值。(默认值为实际值)

共有1个答案

向俊贤
2023-03-14

没有正确或错误的答案。这完全取决于客户端和服务之间的契约。当您为例如getCustomer()定义合约时,该合约将规定

    < li >某些值可能是空字符串,或者 < li >掩码值是xxx,或者 < li >该字段可能根本不存在(类似于XML中的可选元素)

这总结了你的三种方法。只要客户知道你选择了哪种策略,那么就没问题。

如果您正在对具有大量期望某种行为的客户端的现有API应用授权,那么您最好的选择是选择掩码值,其中值被替换为默认值。风险与其说默认值可能是真实的,不如说最终用户不知道信息已被掩码。

 类似资料:
  • 环境之间的唯一区别(从Ansible的角度来看)是。/roles/esb/vars/main.yml中保存的信息。 我已经考虑过使用svn为每个环境保留一个vars/main.yml,所以每次需要配置环境时,在运行上面的命令之前,我会检查该环境的角色,然后检查vars/main.yml。 对我来说,不是一个优雅的解决方案。我怎样才能做得更好? ./roles/esb/tasks/main.yml

  • The Character Controller is mainly used for third-person or first-person player control that does not make use of Rigidbody physics. 角色控制器主要用于第三人称或第一人称游戏主角控制,并不使用刚体物理效果。 The Character Controller 角色控制器

  • 我正在构建的应用程序的需求要求用户角色是动态的,它们将存储在数据库中,并且还将映射到应用程序的功能(表单),也存储在数据库中。 限制角色访问特定页面并不困难,但要求还规定表单输入必须根据角色进行定制,这意味着输入可以是强制性的或非强制性的、可见的或不可见的、只读的或不基于角色的。 我控制这些限制的方法是为每个角色创建一个属性文件,该文件将应用程序中所有表单的所有输入存储为键,并将一个长字符串存储为

  • 我希望用户能够根据自己的角色访问html页面。例如,只有具有HR角色的人才能查看设置。html页面,只有经理才能看到pendingrequest。html。 这是我的安全配置: 由于某种原因,我在那里尝试的东西没有用,无论我扮演什么角色,我都看不到这些页面。

  • 我正在开发一个mean stack web应用程序,它包含基于登录用户角色的差异访问。有几个不同的角色,如管理员,政府,志愿者等。 1.如何基于角色管理前端? 目前,我正在为每个角色设置全局标志,如isAdmin、is志愿者、isGovt等,并根据其值,使用 这是正确的说法吗。如果不是,请建议处理UI的正确方法。 2.如果用户没有授权,如何管理后端和重定向路由? 目前我正在尝试使用angular权

  • 问题内容: 是否可以使用任何基于角色的开源访问控制系统? 问题答案: 布兰登·萨维奇(Brandon Savage)在他的PHP软件包“ ApplicationACL ” 上做了一个演示,该演示可能会或可能不会完成基于角色的访问。PHPGACL可能也能正常工作,但是我不能肯定地告诉您。 但是,我可以告诉您的是Zend Framework 的Zend_ACL组件将执行基于角色的设置(但是您必须子类化