如何在运行时授予用户权限?

时间:2019-01-07 12:15:48

标签: acl hyperledger-composer

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

用例示例:

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

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

有人有想法吗? :)

1 个答案:

答案 0 :(得分:0)

建议检出Composer示例网络中的代码示例-此PII(个人身份信息)网络与您要实现的功能类似(通过(在这种情况下)标识符来控制对患者记录的访问)医师)https://github.com/hyperledger/composer-sample-networks/blob/master/packages/pii-network/lib/logic.js

您的ACL显然可以编写为控制对患者记录的访问(即,他/她已同意),并且仅基于ACL中的条件检查来访问匹配的医师标识符-使用类似内容的示例可以在此堆栈溢出中找到-> Hyperledger-Composer: ACL-rules with condition of type (r.someArray.indexOf(p.getIdentifier()) > -1) not working

我想说的是,每个患者拥有一组授权医师会更好(即,比起相反的情况,医生可能每次要检查很多患者ID的情况要少得多)。从理论上讲,您的数组大小是JavaScript约束(堆大小等),但请参见此处的讨论-> Maximum size of an Array in Javascript