2014-07-09 36 views
4

有人可以简单解释一下,解析云代码中的master key是什么?解析云中的主键是什么?

最近实施的CC功能(使用主密钥)是否有可能改变其他非云代码功能的行为?

作为一个实例,您有一个正常工作的解决方案,可让当前用户将其他PFUser对象添加到关系中,并在需要时删除它们。在此之前,您不需要master key,因为您将当前用户写入PFUser currentUser。稍后您创建另一种类型的用户关系,您要在其中编写另一个PFUser对象,现在此时您需要使用master key,因为如果没有这个,currentUser将无法​​写入另一个PFUser对象。因此,您将创建一个云代码文件来处理此问题,并为实际编写其他用户的currentUser提供合法性。现在一切正常,当实际用户想写其他用户对象时,我们不会收到错误。然而发生了一些事当currentUser试图从他的第一个PFRelation(这在新的cc函数之前也有效)中删除数据时,他获得了我们在第一次尝试写入其他用户之前得到的相同错误..user must be authenticated via logIn or signUp

我猜想,因为我们使用主密钥,它将覆盖现有/原始安全选项 ,我们需要为其他每个函数实现它。我对吗?如果是的话,我该如何处理?或者可以在main.js cc文件中设置不同的限制,每个“旧”功能将以相同方式加上使用主密钥的新功能?

我真的很感谢这个话题的任何信息,因为这对我来说是一个巨大的黑洞。

回答

9

主键覆盖所有安全性,例如ACL或基于类的权限。它就像“根”密码。

只有在需要时才应该调用它,因为启用Parse.Cloud.useMasterKey();后的当前请求的所有方法都将使用主密钥。

您可以通过将选项传递给各个查询/保存/ etc方法来有选择地使用它。

query.find({ useMasterKey: true }).then(function(results) { // ... 

object.save(null, { useMasterKey: true }).then(// ... 
+0

所以我没有使用'Parse.Cloud.useMasterKey();'而我能做到这一点'user.save(NULL,{useMasterKey:真}),然后(功能(用户){。 response.success(user);},function(error){response.error(error)});'在这种情况下,它不会影响整个项目? – rihe

+0

正确! :)把它传递给你需要的确切的电话会好得多,而不是为所有事情启用它。 – Fosco

+1

谢谢福斯科,我现在就试试。从源头获得帮助是很了不起的。 – rihe