朕遵旨
朕遵旨
  • 发布:2022-10-09 15:37
  • 更新:2022-10-09 17:51
  • 阅读:159

DBschema能否通过【版本号】设置【增删查改】权限?

分类:uniCloud

旧版本的项目没有经过数据加密处理,新版本的加了,
为了数据安全,如何实现“旧版本无法发起增删查改数据请求”?

2022-10-09 15:37 负责人:无 分享
已邀请:
DCloud_heavensoft

DCloud_heavensoft

加密是云函数加密的吗?客户端加密是没啥意义的。如果使用的是clientDB,那应该在action里加密。
同样在action里也可以写代码判断客户端的版本号,拒绝低版本的请求。

  • 朕遵旨 (作者)

    是云函数加密,是使用clientDB,旧版本项目使用uniCloud.database().collection().xxx发起请求,在云函数的哪个文件添加判断逻辑?

    2022-10-09 16:45

  • DCloud_heavensoft

    回复 朕遵旨: 在clientDB的action云函数

    2022-10-09 16:48

  • 朕遵旨 (作者)

    回复 DCloud_heavensoft: 可是旧版本没有通过action,而是通过uniCloud.database().collection().xxx的方法发送请求呀,这样不能拒绝低版本的请求诶

    2022-10-09 16:54

  • DCloud_heavensoft

    回复 朕遵旨: 不。在schema的权限控制里,可以配置必须挂action,否则禁止访问,详见:https://uniapp.dcloud.net.cn/uniCloud/schema.html#%E6%9D%83%E9%99%90%E8%A7%84%E5%88%99%E7%9A%84%E5%8F%98%E9%87%8F%E5%92%8C%E8%BF%90%E7%AE%97%E7%AC%A6

    2022-10-09 21:11

  • 朕遵旨 (作者)

    回复 DCloud_heavensoft: 感谢,按照这个方法已经成功解决

    2022-10-10 15:11

朕遵旨

朕遵旨 (作者)

目前用的方案是用自定义token,思路如下:
文档方法在token中加入字段version
加入位置是uniCloud/cloudfunctions/common/uni-config-center/uni-id/custom-token.js

module.exports = async (tokenObj) => {   

  // #ifdef APP-PLUS  
        tokenObj.version = plus.runtime.version  //当前版本0.612  
     #else  
        tokenObj.version ='H5OrMP'  
  // #endif  

  return tokenObj  
}

DBSchema:
"permission": {
"read": "auth.version>0.611 ||auth.version=='H5OrMP' ", //0.611为需要拒绝的最高级老版本
}

但会显示PERMISSION_ERROR 权限校验未通过,不知道是不是custom-token.js的文件创建位置不对,还是token加了version字段后云端不能通过auth.version获取到

  • 朕遵旨 (作者)

    已按照一楼方法解决此问题

    2022-10-10 15:12

要回复问题请先登录注册