我们的API建立在parse(parseplatform.org)上。
我有一个后台工作,需要代表用户运行查询;它需要确保查询只查找/更新用户ACL允许的对象。
对于大多数用户,我可以查询Parse.Session
类以获取给定用户的sessionToken
,然后将其用于所有请求,例如query.find({sessionToken: "r:xxx"})
。
但是对于某些用户来说,唯一可用的session
对象已过期,对于许多用户来说,根本没有session
个对象。
据我所知,创建Parse.Session
实例是不可能的;生成会话的唯一方法是调用Parse.User.logIn
;但这不是我们的选择,主要是因为我们需要用户的密码(我们没有),还因为它会导致parse-server
环境中的内存泄漏。
有没有人遇到过这方面的解决方案?
答案 0 :(得分:1)
对于没有用户的后台作业,您应该使用以下
query.find({useMasterKey:true});
useMasterKey将绕过任何ACL安全限制。适合批处理作业。
请注意,调用此代码的任何其他内容也将使用masterKey。有时我会在之前添加以下代码以确保使用正确的访问
var findOptions={};
if (request.user){
findOptions = {sessionToken:request.user.getSessionToken()};
} else {
findOptions = {useMasterKey:true};
}
query.find(findOptions);
答案 1 :(得分:1)
根据您尝试执行的操作,您可能只需要在登录时运行代码(因此您拥有会话令牌)。
您也可以尝试使用主密钥运行代码,但这会带来自己的问题。