云开发数据库的安全权限问题?
发布于 5 年前 作者 yong30 3348 次浏览 来自 问答

例如,通过以下代码查询修改记录,想要实现的效果,只有在白名单内的人才有权限修改。

db.collection('banner').where({
  _openid: '{openid}', // 无论有没有这个参数,都无法实现想要的结果。加上这个,是因为文档说:查询更新语句都需明确指定 openid
  id: event.id
}).update({
  data: {
     name: _.set('a')
  }
}).then((result) => {
  console.log(result);
});

数据库自定义权限为:

{
"read": true,
"write": "auth.openid in ['zzz','aaa']"
}

已经设置 read 为 true,但是通过 where 查询出来的结果为空。

即使 openid 不属于 zzz 和 aaa ,也都能成功的修改?

1 回复

小程序端直接访问数据库 不需要在where里加openid 因为它默认会加入用户自己的openid;

关于write的语法不太清楚,但是可以有其他方法,新建一张表power叫权限表,有banner的_id和用户openid两个字段,先访问这张表询问是否有权限有权限在访问banner;这些操作建议放到云函数中执行,小程序端的话如果想破解的话总是有办法的

回到顶部