在分析服务器上,是否有其他方式作为用户查询,而没有“会话”对象?
我们的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);
取决于你想要做什么,你可能只需要运行该代码当他们登录(并因此你有一个会话令牌)。
您也可以尝试使用主密钥运行代码,但是它带有自己的问题。
我正在尝试在背景中为他们做一些事情(组织/访问他们的内容),以便在新事物准备好时向他们发送电子邮件? 我可以使用主密钥,但它会让我访问他们无法访问的信息,所以我不确定这是否是正确的方法? 如果没有其他办法,我会尝试在登录时运行代码,而不是将其作为批处理后台作业执行 –
谢谢阿隆,但我不想使用掌握的关键,因为它会返回用户不应该看到的对象 - 我只需要查找属于用户的读取权限的对象,以便当我最终发送对象 - 他们可以将它加载到他们的账户上。 –
尝试使用'成为'的方法。不知道你是否有sessionToken存储在某个地方,但如果你这样做,你可以使用http://parseplatform.org/Parse-SDK-JS/api/classes/Parse.User.html#methods_become –
它的事实是,我们不'没有为导致此问题的某些用户存储sessionTokens;云代码中'成为'方法也不安全。 –