如何以编程方式在解析服务器中的 CLP 上设置指针权限?



我想使用 REST API 或 JS SDK 在 CLP 上设置指针权限,以便我可以自动化该过程。这可能吗?

该文档讨论了指针权限,但没有说明如何实现它们 AFAIK。从链接的文档:

指针权限

是一种特殊类型的类级权限,它根据存储在这些对象的指针字段中的用户,在类中的每个对象上创建虚拟 ACL。例如,给定一个具有owner字段的类,对owner设置读取指针权限将使类中的每个对象只能由该对象的owner字段中的用户读取。

如何以编程方式实现上述目标?例如,如果我有一个具有存储User指针的owner属性的对象,如何设置 CLP 以使该对象只能由owner读取?

我能够通过搜索解析服务器源代码来解决这个问题。此测试套件演示了指针权限的用法。

将 CLP 添加到对象架构时,可以通过在 CLP 的readUserFieldswriteUserFields属性中包含指针名称来设置指针权限。下面是一个示例:

const exampleSchema = new Parse.Schema('Example')
exampleSchema
.addString('content')
.addPointer('owner', '_User')
const clp = {
create: { '*': true },
readUserFields: ['owner'],
writeUserFields: ['owner']
}
exampleSchema.setCLP(clp)
await exampleSchema.save()

上面为Example对象创建架构。它允许任何人创建Example,但只允许在owner属性中设置的用户读取或写入对象。

可以通过单击类,然后从右侧菜单中选择"安全性"来在解析仪表板中进行设置。

在解析社区找到

这样的东西应该适合你:

const schema = new Parse.Schema("MyClass");
schema.setCLP({
"find": {
"requiresAuthentication": true,
"role:admin": true
},
"get": {
"requiresAuthentication": true,
"role:admin": true
},
"create": { "role:admin": true },
"update": { "role:admin": true },
"delete": { "role:admin": true }
});
await schema.update();

您需要使用 Node.js SDK 并使用主密钥对其进行初始化。