在解析服务器上,是否有另一种查询用户的方法,没有“会话”对象?

时间:2017-10-04 22:08:14

标签: session parse-platform acl parse-server

我们的API建立在parse(parseplatform.org)上。

我有一个后台工作,需要代表用户运行查询;它需要确保查询只查找/更新用户ACL允许的对象。

对于大多数用户,我可以查询Parse.Session类以获取给定用户的sessionToken,然后将其用于所有请求,例如query.find({sessionToken: "r:xxx"})

但是对于某些用户来说,唯一可用的session对象已过期,对于许多用户来说,根本没有session个对象。

据我所知,创建Parse.Session实例是不可能的;生成会话的唯一方法是调用Parse.User.logIn;但这不是我们的选择,主要是因为我们需要用户的密码(我们没有),还因为它会导致parse-server环境中的内存泄漏。

有没有人遇到过这方面的解决方案?

2 个答案:

答案 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)

根据您尝试执行的操作,您可能只需要在登录时运行代码(因此您拥有会话令牌)。

您也可以尝试使用主密钥运行代码,但这会带来自己的问题。