首页 > 解决方案 > 如何在运行时授予用户权限?

问题描述

我正在使用 Hyperledger Composer 编写数据管理系统。我知道 .acl 和 .cto 文件,但我不知道如何通过事务(=在运行时)添加(和保存)权限。

示例用例:

  1. 患者允许特定医师查看他的数据。权限被保存,医生可以查看患者的数据。
  2. 患者撤回他的许可。医师无法再查看数据。

可以保存每个医生的所有患者权限列表,并将其姓名添加到列表中,使其成为仅限患者的事务,但建模语言不允许列表,仅允许数组。

有人有想法吗?:)

标签: aclhyperledger-composer

解决方案


建议查看 Composer 示例网络以获取代码示例 - 此 PII(个人身份信息)网络与您尝试实现的目标相似(通过(在本例中)医师的标识符控制对患者记录的访问)https ://github.com/hyperledger/composer-sample-networks/blob/master/packages/pii-network/lib/logic.js

您的 ACL 显然可以被写入来控制对患者记录的访问(即他/她已同意),并且仅允许匹配的医师标识符访问,基于 ACL 中的条件检查 - 可以找到使用类似内容的示例在此处的堆栈溢出中-> Hyperledger-Composer: 条件类型为 (r.someArray.indexOf(p.getIdentifier()) > -1) 的 ACL 规则不起作用

我会说每位患者拥有一系列授权医师会更好(即比医生每次可能需要检查大量患者 ID 的情况要少得多)。您的数组大小在理论上是一个 javascript 约束(堆大小等),但请参见此处的讨论-> JavaScript 中数组的最大大小


推荐阅读