是否可以在 beforeSave 中设置用户 ACL?
Is it possible to set a User ACL in beforeSave?
在这种情况下,只有用户自己才能访问自己的 User
对象。
目前,ACL 是在 Cloud Code afterSave
触发器中设置的,就在创建用户之后:
Parse.Cloud.afterSave("_User", async (request) => {
const user = request.object;
if (!user.existed()) {
user.setACL(new Parse.ACL(user));
await user.save();
}
});
是否可以在 beforeSave
触发器中执行此操作(以保存数据库写入)?
是的,请确保不要在 beforeSave
中调用 user.save()
我看了一下Parse Server代码,应该是可以的。我担心默认的 ACL 会覆盖您在 beforeSave
触发器中设置的内容,但事实并非如此。如您所见,here 它保留了预先设置的内容,您甚至可以从客户端实际发送此设置。
在 beforeSave
中设置一个空的 ACL 将确保只有用户被授予访问权限,因为默认情况下用户被授予访问他们自己的 _User
对象的权限:
request.object.setACL(new Parse.ACL());
在这种情况下,只有用户自己才能访问自己的 User
对象。
目前,ACL 是在 Cloud Code afterSave
触发器中设置的,就在创建用户之后:
Parse.Cloud.afterSave("_User", async (request) => {
const user = request.object;
if (!user.existed()) {
user.setACL(new Parse.ACL(user));
await user.save();
}
});
是否可以在 beforeSave
触发器中执行此操作(以保存数据库写入)?
是的,请确保不要在 beforeSave
user.save()
我看了一下Parse Server代码,应该是可以的。我担心默认的 ACL 会覆盖您在 beforeSave
触发器中设置的内容,但事实并非如此。如您所见,here 它保留了预先设置的内容,您甚至可以从客户端实际发送此设置。
在 beforeSave
中设置一个空的 ACL 将确保只有用户被授予访问权限,因为默认情况下用户被授予访问他们自己的 _User
对象的权限:
request.object.setACL(new Parse.ACL());