Master Key 和超级权限
因为云引擎运行在可信的服务器端环境中,所以你可以全局开启超级权限(Master Key),这样云端会跳过包括 ACL 和 Class 权限在内的检查,让你自由地操作所有云存储中的数据,当然这种方式也允许调用一些仅供 masterKey 使用的 API。开启 Master Key 的方法如下:
+
// 通常位于 server.js
AV.Cloud.useMasterKey();
+
如果没有添加这些代码,默认是没有超级权限的,这意味着在云引擎中你也不能修改被 ACL 保护的数据,你需要在进行操作时手动指定 sessionToken,让操作以这个用户的权限来执行:
+
var post = new Post();
post.save({
author: user
}, {
// 或者使用 request.sessionToken(网站托管中需启用 Cloud.CookieSession
)
sessionToken: user.getSessionToken()
});
+
或者你也可单独对某一个操作使用 Master Key,跳过权限检查:
+
post.destroy({useMasterKey: true});
按照文档中所说可以单独对某个操作使用Master Key ,但是实际应用中却是失败的
比如
AV.Cloud.beforeSave('Group',function (request) {
var GroupName = request.object.get('name');
var query = new AV.Query('Group');
query.equalTo('name',GroupName);
return query.find({'userMasterKey':true}).then(function(result){
if(result.length>0){
throw new AV.Cloud.Error('The group name is occupied');
}
})
});
不使用AV.Cloud.useMasterKey(),就返回的是空数组