Session 在parse server上,是否有其他方法可以作为用户进行查询,而不使用';会议';对象

Session 在parse server上,是否有其他方法可以作为用户进行查询,而不使用';会议';对象,session,parse-platform,acl,parse-server,Session,Parse Platform,Acl,Parse Server,我们的API是基于parse(parseplatform.org)构建的 我有一个后台工作,需要代表用户运行查询;它需要确保查询只查找/更新用户ACL允许的对象 对于大多数用户,我可以查询Parse.Session类来获取给定用户的sessionToken,然后在所有请求上使用它,例如query.find({sessionToken::r:xxx}) 但是对于一些用户来说,唯一可用的会话对象已经过期,而对于许多用户来说,根本没有会话对象 就我所知,创建Parse.Session实例是不可能的;生

我们的API是基于parse(parseplatform.org)构建的

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

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

但是对于一些用户来说,唯一可用的
会话
对象已经过期,而对于许多用户来说,根本没有
会话
对象

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


有人想出了解决这个问题的办法吗

对于没有用户的后台作业,应使用以下命令

find({useMasterKey:true})

useMasterKey将绕过任何ACL安全限制。非常适合批量作业

请注意,调用此代码的任何其他代码也将使用masterKey。有时我会在之前添加以下代码,以确保使用了正确的访问

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

query.find(findOptions);

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


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

非常感谢,但我不想使用mastery键,因为它会返回用户不应该看到的对象-我只需要找到属于用户读取权限的对象,这样当我最终将对象发送给他们时,他们就可以将其加载到他们的帐户上。试着使用“Been”方法。不确定您是否将sessionToken存储在某个地方,但如果您存储了sessionToken,您可以使用它,这是因为我们没有为某些用户存储sessionTokens,这是导致此问题的原因;另外,
been
方法在云代码中不安全。你能详细说明为什么been在云代码中不安全吗?如果我没记错的话,该函数将在Parse.user.current上设置一个用户对象,该对象是全局可访问的。在服务器环境中,这将导致状态/内存泄漏。我正在尝试在后台为他们做一些事情(组织/访问他们的内容),以便我们可以在准备好新内容时向他们发送电子邮件?我可以使用主密钥,但它会让我访问他们无法访问的信息,所以我不确定这样做是否正确?如果没有其他方法,我将尝试在他们登录时运行代码,而不是作为批处理后台作业