ACL 在操场上有效吗?
ACL works in playground?
能否请您告诉我们 ACL 在操场上是否有效??
我想创建一个规则,资产所有者只能修改规则。我在 playground by 试过,但没用
我将文件创建为资产,并将供应商创建为资产的所有者。然后,创建名为 file1 的资产将 supplier1 附加为所有者。当我执行提交交易时,Supplier2 也可以修改交易。我的规则无效吗??我需要更多规则吗??
/**
* New model file
*/
namespace org.acme.model
enum TransactionState {
o CREATED
o VERIFIED
}
asset File identified by fileId {
o String fileId
o String data
--> Supplier owner
o TransactionState state
}
participant Supplier identified by supplierId {
o String supplierId
o String emailId
o String details
}
transaction DataValidate {
--> File asset
o TransactionState state
--> Supplier supplier
}
/**
* Data Validation by Supplier
* @param {org.acme.model.DataValidate} dataValidate - the DataValidate transaction
* @transaction
*/
function DataValidate(dataValidate) {
dataValidate.asset.state = dataValidate.state;
return getAssetRegistry('org.acme.model.File')
.then(function (assetRegistry) {
return assetRegistry.update(dataValidate.asset);
});
}
rule Rule1 {
description: "can perform ALL operations , IF the participant is owner of the asset"
participant(m): "org.acme.model.Supplier"
operation: ALL
resource(v): "org.acme.model.File"
condition: (v.owner.getIdentifier() == m.getIdentifier())
action: ALLOW
}
rule Member {
description: "Allow the member read access"
participant: "org.acme.model.Supplier"
operation: READ
resource: "org.acme.model.*"
action: ALLOW
}
我的标准是,数据验证应仅由文件所有者完成,而不应由其他人完成。如何处理
回答您的主要问题 - 是的,ACL 文件在 Online Playground 中确实有效,我让它适用于我的一个应用程序。如果您指的不是在线游乐场,我不确定我的其余回答是否有帮助。
如果您使用的是在线游乐场,假设您已经转到右上角 'admin' 并创建新身份并将其发布给参与者?如果没有,您可以通过以下方式进行:
点击游乐场右上角的'admin'
'+签发新ID'
提供一个用户 ID(任何你喜欢的)和参与者(将是你之前创建的)然后按 'Create New'
- Select 选项 2:“+ 添加到我的钱包”(这将允许您使用该身份,并且您将 'be' 该参与者
我问的原因是即使你的 ACL 文件有效,如果你保持 'admin' 身份,你仍然可以 view/do 一切你想要的。
另一件事,您可以在 Rule1 中尝试使用“===”而不是“==”吗?这两条规则是有道理的,从它的角度来看,所有用户都可以查看,但是如果所有者以外的任何人都试图验证该资产,则会引发错误,因为它需要未授予的更新权限。
希望对您有所帮助。
能否请您告诉我们 ACL 在操场上是否有效??
我想创建一个规则,资产所有者只能修改规则。我在 playground by 试过,但没用
我将文件创建为资产,并将供应商创建为资产的所有者。然后,创建名为 file1 的资产将 supplier1 附加为所有者。当我执行提交交易时,Supplier2 也可以修改交易。我的规则无效吗??我需要更多规则吗??
/**
* New model file
*/
namespace org.acme.model
enum TransactionState {
o CREATED
o VERIFIED
}
asset File identified by fileId {
o String fileId
o String data
--> Supplier owner
o TransactionState state
}
participant Supplier identified by supplierId {
o String supplierId
o String emailId
o String details
}
transaction DataValidate {
--> File asset
o TransactionState state
--> Supplier supplier
}
/**
* Data Validation by Supplier
* @param {org.acme.model.DataValidate} dataValidate - the DataValidate transaction
* @transaction
*/
function DataValidate(dataValidate) {
dataValidate.asset.state = dataValidate.state;
return getAssetRegistry('org.acme.model.File')
.then(function (assetRegistry) {
return assetRegistry.update(dataValidate.asset);
});
}
rule Rule1 {
description: "can perform ALL operations , IF the participant is owner of the asset"
participant(m): "org.acme.model.Supplier"
operation: ALL
resource(v): "org.acme.model.File"
condition: (v.owner.getIdentifier() == m.getIdentifier())
action: ALLOW
}
rule Member {
description: "Allow the member read access"
participant: "org.acme.model.Supplier"
operation: READ
resource: "org.acme.model.*"
action: ALLOW
}
我的标准是,数据验证应仅由文件所有者完成,而不应由其他人完成。如何处理
回答您的主要问题 - 是的,ACL 文件在 Online Playground 中确实有效,我让它适用于我的一个应用程序。如果您指的不是在线游乐场,我不确定我的其余回答是否有帮助。
如果您使用的是在线游乐场,假设您已经转到右上角 'admin' 并创建新身份并将其发布给参与者?如果没有,您可以通过以下方式进行:
点击游乐场右上角的'admin'
'+签发新ID'
提供一个用户 ID(任何你喜欢的)和参与者(将是你之前创建的)然后按 'Create New'
- Select 选项 2:“+ 添加到我的钱包”(这将允许您使用该身份,并且您将 'be' 该参与者
我问的原因是即使你的 ACL 文件有效,如果你保持 'admin' 身份,你仍然可以 view/do 一切你想要的。
另一件事,您可以在 Rule1 中尝试使用“===”而不是“==”吗?这两条规则是有道理的,从它的角度来看,所有用户都可以查看,但是如果所有者以外的任何人都试图验证该资产,则会引发错误,因为它需要未授予的更新权限。
希望对您有所帮助。