在分析服务器上,是否有其他方式作为用户查询,而没有“会话”对象?

问题描述:

我们的API基于parse(parseplatform.org)构建。在分析服务器上,是否有其他方式作为用户查询,而没有“会话”对象?

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

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

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

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

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

对于后台作业不存在,你应该使用下面的

query.find({useMasterKey:真})的用户;

useMasterKey将绕过任何ACL安全限制。完美的批量工作。

只要注意其他调用此代码的内容也将使用masterKey。有时我会添加以下代码之前,确保正确的访问使用

var findOptions={}; 
if (request.user){ 
    findOptions = {sessionToken:request.user.getSessionToken()}; 
} else { 
    findOptions = {useMasterKey:true}; 
} 

query.find(findOptions); 
+0

谢谢阿隆,但我不想使用掌握的关键,因为它会返回用户不应该看到的对象 - 我只需要查找属于用户的读取权限的对象,以便当我最终发送对象 - 他们可以将它加载到他们的账户上。 –

+0

尝试使用'成为'的方法。不知道你是否有sessionToken存储在某个地方,但如果你这样做,你可以使用http://parseplatform.org/Parse-SDK-JS/api/classes/Parse.User.html#methods_become –

+0

它的事实是,我们不'没有为导致此问题的某些用户存储sessionTokens;云代码中'成为'方法也不安全。 –

取决于你想要做什么,你可能只需要运行该代码他们登录(并因此你有一个会话令牌)。

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

+0

我正在尝试在背景中为他们做一些事情(组织/访问他们的内容),以便在新事物准备好时向他们发送电子邮件? 我可以使用主密钥,但它会让我访问他们无法访问的信息,所以我不确定这是否是正确的方法? 如果没有其他办法,我会尝试在登录时运行代码,而不是将其作为批处理后台作业执行 –