1

我使用“IBM‌ 区块链平台”扩展和 nodejs 在超级账本结构上开发了一个应用程序。我使用“fabric-ca-client v1.3.0”模块来注册用户和管理员证书。我想为用户添加角色并根据我的链码上的用户角色进行访问控制。我尝试注册多个证书,但此模块始终注册具有空角色和从属关系的证书,如下所示:

{"name":"admin","mspid":"Org1MSP","roles":null,"affiliation":"","enrollmentSecret":"","enrollment":{"signingIdentity":"...","identity":{"..."}}}

我在关于在链码上使用角色的超级账本 shim 文档中找到了这个:

const ClientIdentity = require('fabric-shim').ClientIdentity;

let cid = new ClientIdentity(stub); 
object passed to Init() and Invoke() methods
if (cid.assertAttributeValue('hf.role', 'auditor')) {
   // proceed to carry out auditing
}

但我没有找到任何解决方案来注册和注册具有“hf.role”属性的用户

4

1 回答 1

1

您必须先注册用户,然后再注册用户。您可以通过 cmdline 和 REST 执行此操作。对于注册用户时的 cmdline,您需要将其他属性传递为:

--id.attrs 'role=writer:ecert,email=user1@gmail.com'

那么在报名时:

--enrollment.attrs "role=writer,email,phone:opt"

在链码中,您可以通过以下方式访问属性:

let cid = new ClientIdentity(stub); 
if (cid.assertAttributeValue('role', 'writer')) { .. }
于 2019-01-04T08:35:46.867 回答