解析服务器忽略 ACL
Parse Server ignores ACL
我的 NewsFeed 对象有一个简单的 Parse Cloud Code 函数。对于这些 NewsFeed 对象,我设置了一个 ACL,以便 fromUser 可以写入它,而 toUser 可以读取和写入它。我尝试使用以下函数为每个用户获取这些对象:
Parse.Cloud.define("get_feed", async (request) => {
let user = request.user;
var query = new Parse.Query("NewsFeed");
query.equalTo("toUser", user);
query.include("fromUser");
query.descending("createdAt");
let result;
try {
result = await query.find();
} catch (error) {
throw error.message;
}
return result;
});
我希望得到所有满足查询并具有以下 ACL 的对象:
"ACL" : {
"xXl3OIndCP": {
"read": true,
"write": true
},
"VPuRMZGhcv": {
"write": true
}
}
但不幸的是,它只有在我添加 public 对 ACL 的读取访问权限时才有效,这样它看起来像这样
"ACL" : {
"*": {
"read": true
},
"xXl3OIndCP": {
"read": true,
"write": true
},
"VPuRMZGhcv": {
"write": true
}
}
我认为这不是预期的行为,或者我错了吗?有人以前遇到过这个问题吗?
好吧,原来必须在 find() 函数中传递会话令牌,所以我不得不使用 result = await query.find({sessionToken : user.getSessionToken()});
而不是 result = await query.find();
我的 NewsFeed 对象有一个简单的 Parse Cloud Code 函数。对于这些 NewsFeed 对象,我设置了一个 ACL,以便 fromUser 可以写入它,而 toUser 可以读取和写入它。我尝试使用以下函数为每个用户获取这些对象:
Parse.Cloud.define("get_feed", async (request) => {
let user = request.user;
var query = new Parse.Query("NewsFeed");
query.equalTo("toUser", user);
query.include("fromUser");
query.descending("createdAt");
let result;
try {
result = await query.find();
} catch (error) {
throw error.message;
}
return result;
});
我希望得到所有满足查询并具有以下 ACL 的对象:
"ACL" : {
"xXl3OIndCP": {
"read": true,
"write": true
},
"VPuRMZGhcv": {
"write": true
}
}
但不幸的是,它只有在我添加 public 对 ACL 的读取访问权限时才有效,这样它看起来像这样
"ACL" : {
"*": {
"read": true
},
"xXl3OIndCP": {
"read": true,
"write": true
},
"VPuRMZGhcv": {
"write": true
}
}
我认为这不是预期的行为,或者我错了吗?有人以前遇到过这个问题吗?
好吧,原来必须在 find() 函数中传递会话令牌,所以我不得不使用 result = await query.find({sessionToken : user.getSessionToken()});
而不是 result = await query.find();