收藏
回答

云开发数据库的安全权限问题?

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

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 ,也都能成功的修改?


最后一次编辑于  2020-09-24
回答关注问题邀请回答
收藏

1 个回答

  • 星辰
    星辰
    2020-09-24

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

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

    2020-09-24
    有用
    回复 1
    • 发表于移动端
      2020-09-24
      我现在就是这样实现的,但还是想知道如果直接用这种写法来限制权限可以怎么实现
      2020-09-24
      回复
登录 后发表内容
问题标签