get(`database.manager.xxx`) get 函数是查找 manager 集合下 _id 为 xxx 的数据 所以传入 auth.openid 找不到对应的数据,要使用ce8xxxxx
云开发数据库安全规则相关问题?请问我下面的规则是哪里出了问题,一直报 errMsg: Permission denied 我想为order集合设定可以允许管理员和用户自己访问的规则,下面是order集合的规则 { "read": "doc._openid == auth.openid || get(`database.manager.${auth.openid}`).isManager == true", "write": "doc._openid == auth.openid || get(`database.manager.${auth.openid}`).isManager == true" } 这是manager集合的结构 [图片] 这是manager集合的规则 { "read": true, "write": "doc._openid == auth.openid" }
2021-02-25write 规则, auth.openid == doc._openid 因为查询条件中无openid 所以校验失败 auth.openid in get('database.seller.${doc._id}').worker 使用了变量动态查询, get 的部分应该是 get(`database.seller.${doc._id}`), 注意使用反引号
数据库安全规则配置有问题?{ "read": true, "write": "auth.openid == doc._openid || auth.openid in get('database.seller.${doc._id}').worker", } 这是我配置的安全规则 [图片] 这是我在数据库中保存的openid信息 db.collection('seller').where({ _id: '21ded5cb5ff88422044c0eb27162b0dc' }).update({ data: { ifOpening: true } }).then(res => { console.log(res) }).catch(err => { console.log(err) }) 为什么用下面这个查询会报权限的错误呢
2021-02-25hello 确认下云函数请求下载文件时 环境是否对应呢,另外环境所属的小程序 是不是和 云函数所属的小程序一致呢,
云函数文件下载 API 报错,是什么原因?API名称:cloud.downloadFile APPID:wx0c1681caca344a3d 基础库版本好:2.11.3 终端类型:云端服务器 云函数后台日志如下: [图片] 搜索过对应的文件,是存在的。如下图: [图片]
2020-09-09确认下avatarUrl, gender, nickname 有没有获取到值, 应该是undefine
如何解决cloud.callFunction向云函数传递参数的问题?我在使用cloud.callFunction向云函数传参时运单总是拿不到值。[图片] 下图是接收位置[图片] 这里是接受位置[图片] 无论在data中是否包含bbc,或直接在data中进行传递,当我console.log这个event时,里面总是没有数据
2020-07-21您好, 这里方便详细说下是怎么调用的吗, 通过 getQcloudToken 获取到的密钥是临时密钥 2h 有效期, 使用时和永久密钥用法不同 secretId 、secretKey 要结合接口返回的token 一起使用
为什么腾讯云API失败?secretId不存在?我想用腾讯云的修改数据库的api,看微信小程序的文档里可以通过getQcloudToken api来获取secretId 和secretKey,再用secretId和secretKey来调用腾讯云的api,我成功获得了secretId和secretKey,但是当我调用腾讯云的api时,返回消息说我的secretId不存在,无论是在代码里,还是在腾讯云的API 3.0 Explorer里都是一样的结果。下面是getQcloudToken的文档和ModifyDatabaseACL接口的文档。 https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-http-api/utils/getQcloudToken.html https://cloud.tencent.com/document/api/876/34819 这是调用结果,请问是哪里出问题了? { "Response": { "Error": { "Code": "AuthFailure.SecretIdNotFound", "Message": "SecretId不存在,请输入正确的密钥。" }, "RequestId": "d4aa8277-0afb-467e-80f8-c8fe31f6c2ac" } }
2020-07-13规则中get函数如果使用变量的话, 需要使用反引号(即 ` ) 类比 js 中的字符串模板语法, 如果使用单引号的话,认为是静态字符串, 因此规则可以这么设置 { "read": "doc._openid == auth.openid|| auth.openid in get(`database.admin.${doc._openid}`).adminOpenid", "write": "doc._openid == auth.openid|| auth.openid in get(`database.admin.${doc._openid}`).adminOpenid" } 另外, admin 表中并不存在 _id 为 'o6My***********VyE 的记录 ,因此权限校验也会失败,get 的参数是获取 database.collection.docid 的doc, admin 表中记录的id为 “b398****2f38”(截图中记录完整的_id) 因此规则最终修正为 { "read": "doc._openid == auth.openid|| auth.openid in get(`database.admin.b389****2f38`).adminOpenid", "write": "doc._openid == auth.openid|| auth.openid in get(`database.admin.b389****2f38`).adminOpenid" }
云开发数据库自定义权限后,小程序端无法更新,请问是我哪里写错了吗?新建2个集合按照官方文档测试。想实现 ‘仅管理员和创建者可操作’ 的功能。测试无法更新。user集合权限改成公有写,可更新。请大大指教如何实现仅管理和创建者可写的功能。详情图如下: 集合1:admin [图片] 集合1权限: [图片]集合2:user [图片]集合2权限: { "read": "doc._openid == auth.openid|| auth.openid in get('database.admin.${doc._openid}').adminOpenid", "write": "doc._openid == auth.openid|| auth.openid in get('database.admin.${doc._openid}').adminOpenid" } 小程序客户端测试代码: test(){ //更新指定字段 const db = wx.cloud.database({env: 'pfyj********b'}) const todos = db.collection('user') todos.where({ _openid: 'o6My***********VyE' //无错误 }).update({ data: { phone: "test" }, success: function (res) { console.log(res) }, fail:function(res){ console.log("cuowu",res) } }) } 提示错误:cuowu Error: errCode: -502003 database permission denied | errMsg: Permission denied
2020-04-22云存储的安全规则已经在支持中了
请求官方升级控制台,让云存储文件可以批量重命名以及拥有数据库安全规则那样安全访问,大家觉得怎么样?[图片]
2020-04-02如果规则是true 就是所有用户可读, 那么搜索条件就不需要显示传入 openid, 但是如果希望客户只能读自己的信息, 那么规则中就需要对 doc._openid 进行判断,同时显式传入openid 给系统来计算
数据库安全规则要求显式传入openid却发现了问题?[图片] 使用了安全规则后,显示传入的openid 会被当成查询条件传入,导致原本所有客户可读的信息变成只能读自己的信息。 大家是否也是这样,那我反而不传入还能正常获取到所有用户可读的信息。这个难道是官方写文档的时候说错 了嘛?还是说必须只要是个语句就必须显式传入_openid 感觉好晕啊
2020-04-02隐式传入 openid 的搜索条件实际上更改了用户的输入, 有可能引起不期望的行为,安全规则作为高自定义的形式,尽量减少了隐式行为,可以完全自定义。
既然升级了数据库规则,为何不像云函数那样,自动读取触发者的openid然后到安全规则中去匹配?[图片] 由于以前项目中很多地方用到了where语句,且没有传入openid,一整改需要大面积修改。 [图片] 既然开发者工具能够自动填充用户openid,那官方为何不直接隐式传入并到安全规则中去判断即可,每个地方都显式传入有点对开发者们有点不友好,去动旧代码条件怕会影响整个系统运行。望官方能够助我们开发者一臂之力,用回隐式传入,并在安全规则里面自动进行权限鉴别即可。
2020-04-02emm 没错, 这里转义多了一个\ 应该是 ${doc._id}
云开发数据库安全规则问题?下面这段写法是不是多了个 \ ? [图片]
2020-03-18