有人可以向我解释一下,Parse Cloud Code中的master key
是什么?
最近实施的CC功能(使用主密钥)是否有可能改变其他非Cloud Code功能的行为?
作为一个实例,您有一个正常工作的解决方案,允许当前用户将其他PFUser
个对象添加到关系中,并在需要时删除它们。在此之前,您不需要master key
,因为您使用当前用户编写PFUser currentUser
。稍后您要创建另一种类型的用户关系,在其中您要编写另一个PFUser
对象,现在这次需要使用master key
,因为如果没有这个,currentUser
将无法写入另一个PFUser
个对象。因此,您创建一个Cloud Code文件来处理此问题,并为实际currentUser
提供合法性以便编写其他用户。现在一切正常,当实际用户想要编写其他用户对象时,我们不会收到错误。然而事情发生了。当currentUser
尝试从他的第一个PFRelation
删除数据时(在新的cc函数之前也有效),他得到了我们在第一次尝试写另一个之前得到的错误..user must be authenticated via logIn or signUp
用户。
我猜我们使用主密钥会覆盖现有的/原始的安全选项
我们需要为其他所有功能实现它。我对吗?如果是,我该如何处理?或者是否可以在main.js
cc文件中设置不同的限制,并且每个“旧”函数将以相同的方式工作以及使用主密钥的新工作?
我真的很感激有关这个主题的任何信息,因为这对我来说是一个巨大的黑洞。
答案 0 :(得分:9)
主密钥会覆盖所有安全性,例如ACL或基于类的权限。它就像" root"密码。
您应该仅在需要时调用它,因为使用Parse.Cloud.useMasterKey();
启用后当前请求的所有方法都将使用主密钥。
您可以通过将选项传递给单个查询/保存/等方法来有选择地使用它。
query.find({ useMasterKey: true }).then(function(results) { // ...
object.save(null, { useMasterKey: true }).then( // ...