gpt4 book ai didi

javascript - 解析服务器 Node.js SDK : Alternative to Parse. User.become?

转载 作者:搜寻专家 更新时间:2023-10-31 23:52:39 26 4
gpt4 key购买 nike

我想将我的客户端应用程序与 Parse 服务器完全分离,以便将来轻松切换到其他 Baas/自定义后端。因此,所有客户端请求都将指向一个 node.js 服务器,该服务器将代表用户向 Parse 发出请求。

Client <--> Node.js Server <--> Parse Server

因此,我需要 node.js 服务器能够在用户之间切换,这样我就可以保留他们的身份验证上下文。

我知道如何进行身份验证,然后保留用户的 sessionToken,而且我在研究过程中发现这个问题的“公认”解决方案是调用 Parse.User.disableUnsafeCurrentUser,然后使用 Parse.User.become() 将当前用户切换到发出请求的用户。

但这感觉很糟糕,我敢肯定它迟早会导致竞争条件,即在向 Parse 发出请求之前切换当前用户。

我发现的另一个解决方案是不关心 Parse.User,并使用 masterKey 来保存服务器的所有内容,但这会使服务器负责 ACL。

有没有办法从这两个以外的不同用户发出请求?

最佳答案

对后端的任何请求(query.find()object.save() 等)都需要一个可选的options 参数作为最后的论据。这使您可以指定额外的权限级别,例如强制使用主 key 或使用特定的 session token 。

如果您有 session token ,您的服务器代码可以代表该用户发出请求,同时保留 ACL 权限。

假设您有一个 Item 对象表,我们依靠 ACL 来确保用户只能检索他自己的项目。以下代码将使用显式 session token 并仅返回用户可以看到的项目:

// fetch items visible to the user associate with `token`
fetchItems(token) {
new Parse.Query('Item')
.find({ sessionToken: token })
.then((results) => {
// do something with the items
});
}

become() 是真正为 Parse Cloud Code 环境设计的,其中每个请求都存在于一个沙箱中,您可以为每个请求依赖一个全局当前用户。它在 Node.js 应用程序中没有真正意义,我们可能会弃用它。

关于javascript - 解析服务器 Node.js SDK : Alternative to Parse. User.become?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37963234/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com