用户自己保存的是什么意思?

我用自己的应用测试没问题,只能查到对应的唯一一条 _User 数据。
这里把查询中的 sessionToken 打印出来看下,然后到控制台查下确认下数据,看看哪一个环节出了问题。

sessionToken 只是代表由这个用户来进行查询,如果你没有通过 ACL 进行控制,或者指定某些查询条件的话,并不会查询到「用户自己保存的」的数据。

我现在权限机制结构:
1.在云代码server.js里面,AV.Cloud.useMasterKey(); 需要注释,在需要用到的api代码里面局部开放调用。

2.在新增表数据的时候是都设置了ACL权限
var acl = new AV.ACL(req.currentUser);
acl.setPublicReadAccess(false);//只能本人和管理员可读性(管理员要使用查询或者修改就初始调用AV.Cloud.useMasterKey()权限)
userInfoObj.setACL(acl);

3.当用户查询或者操作自己的数据的,查询就用2个维度 定位到用户自己的数据
query.equalTo("uid","59eda2311b69e61fb4d3ac19");
query.find({sessionToken: req.sessionToken}).then

这样控制权限没有问题吧?

另外AVObject对象没有clone函数吗?

如果第二步的权限写入没有问题的话,在第三点时,用户登录后直接 find 查询就可以,不需要传入 sessionToken,如果有权限会返回数据,如果没有权限会返回错误。

嗯,了解了,如果是用户表_User怎么初始ACL合适? 因用户表的数据都是api注册去做的不是 存储api去创建的, 是在注册成功后拿到回调的对象再去修改ACL吗?

_User 表不需要用户做什么,默认只有自己能写自己的数据。
可以把表中的 find 权限关闭,这样就无法 find 其他用户的信息了,这个在新应用中是默认关闭的。

// 如果不希望使用 masterKey 权限,可以将下面一行删除
//AV.Cloud.useMasterKey();

这个是在nodejs 云代码server.js里面的,如果开放就会任何地方都会使用masterKey的权限了,

但是如果我在server.js屏蔽了这段代码,在具体的地方需要使用 直接调用初始 AV.Cloud.useMasterKey(); 那他的作用域是什么样子的?是当前函数还是此处声明了后面都会有???

不建议这样做。Node.js 各个请求是共享上下文的,这样做会导致混乱。

额。。。你指的是哪样不建议?

不建议「在具体的地方需要使用 直接调用初始 AV.Cloud.useMasterKey()」。因为这个设置是全局生效的,会影响到同时的其他请求。

建议对每个请求指定用户。

我现在遇到一个问题,用户数据只能修改自己的数据我设置了ACL权限,但是用户自己的数据涉及敏感数据,比如用户订单金额或者某些状态,是用户本身自己都不能修改的,这个时候该怎么控制 数据权限? 我有想过在修改的时候或者hook事件里面去做逻辑判断判断他修改的数据值是不是在逻辑正常范围内,如果不在让其修改失败。。。除了这样还有别的方法吗?

我全局设置的是120s ,你们默认的是15s,但是我还是在差不多10几秒的时候报超时错误timeout

某个表的数据是权限是设置为只有用户自己可以修改查看,并保存的是时候是设置了sesstionToken的 ,如
AVObject.save(null, {sessionToken: req.sessionToken}).then(function(brroowObj){}

但是如果业务需要我需要在云代码里面操作该用户的数据或者新增,这个时候这个数据的sesstionToken要怎么写成用户的权限可操作,让这个数据还是这个用户的并且只有这个用户可以读写,管理员除外?

这个时候这个数据的sesstionToken要怎么写成用户的权限可操作

这个在上一句话里面有说,已经设置了用户自己可以查看修改了,还需要修改成什么样子呢?

让这个数据还是这个用户的并且只有这个用户可以读写,管理员除外?

管理员指的是什么?指的是 AVRole?

你好,这个选项控制的是网站托管部分的超时,云函数的 15 秒超时是无法调整的