-2

我试图在链代码级别动态限制成员的调用访问,并在教程 “stub.GetCallerCertificate”中找到了此方法,但出现错误。

错误:stub.GetCallerCertificate 未定义(类型 shim.ChaincodeStubInterface 没有字段或方法 GetCallerCertificate)

您能否告诉我在代码中犯了什么错误,如果可能的话,请提供一些工作示例来限制对链码级别成员的访问(仅用于调用事务,就像检查 msg.sender 一样)?

链码语言:Go

代码:

 xx, err1 := stub.GetCallerCertificate()
   if err1 != nil {
       matchLogger.Info(err1)
   }
   matchLogger.Info("Cert ----")
   matchLogger.Info(string(xx))
4

2 回答 2

1

GetCallerCertificate可能是 hyperledger fabric 0.6 的 api。在 Hyperledger Fabric V1 中,您可以使用GetCreator存根上的调用或使用在 hyperledger Fabric 文档的本节ClientIdentity中引用的库。

基于属性的访问控制只是您执行访问控制的一种方式。您可以通过其他方式执行此操作,包括使用 cid 库允许您访问的证书信息。

于 2019-11-07T18:45:39.240 回答
0

这是我从 node.js 获得的示例,这可能会对您有所帮助。

async function getInvokerID(stub) {
    let cid=new ClientIdentity(stub)
    let id = cid.getID(); // X509 Certificate invoker is in CN form
    console.log(id)
    let attributeValue=cid.getAttributeValue("attributeName")
    console.log(attributeValue)
    let CN = id.substring(id.indexOf("CN=") + 3, id.lastIndexOf("::"));
    return attributeValue;
}
于 2019-11-08T08:28:12.463 回答