开发者社区 > 云原生 > Serverless > 正文

EMAS serverless的云数据库自定义权限如何设置指定字段来控制读写

已解决

问题描述

EMAS serverless的云数据库自定义权限中,如何设置指定字段来允许数据库的读写操作?

期望结果

{

  ".write": "request.auth.userId==resource.auth.userId",

  ".read": "request.auth.userId==resource.auth.userId"

}

这个是通过阿里用户的userId来控制创建者读写,因为我是从微信云开发搬过来的只有openid来控制创建者读写。

  1. 能不能把userId换成openid来控制呢?
  2. 自定义权限我该如何填写?
  3. 我访问数据库的时候该怎么传递openid?能不能像userId一样不用传?

已尝试的方法

我的数据库结构为:

1.

{

  ".write": "request.auth.oAuthUserId==resource._openid",

  ".read": "request.auth.oAuthUserId==resource._openid"

}

2.

{

  ".write": "request.oAuthUserId==resource._openid",

  ".read": "request.oAuthUserId==resource._openid"

}

3.

{

  ".write": "request._openid==resource._openid",

  ".read": "request._openid==resource._openid"

}

4.

{

  ".write": "request.auth.oAuthUserId==resource.auth.oAuthUserId",

  ".read": "request.auth.oAuthUserId==resource.auth.oAuthUserId"

} // 这样也报错,是不是只支持userId?

我在小程序端访问会报错?是不是只支持userId来控制读写?

mpserverless.db.collection('User').findOne().then(result => {
	console.log('user', result)
})

展开
收起
数蜂 2023-01-26 11:42:32 151 0
1 条回答
写回答
取消 提交回答
  • EMAS Serverless
    采纳回答

    开发者您好,感谢您对EMAS Serverless的关注。云数据库表的权限管理请参考文档 https://help.aliyun.com/document_detail/435847.html 

    举例说明

    例如我有一张用户表 users,权限如下:

    {
      ".read": "request.auth.userId==resource.auth.userId",
      ".write": "request.auth.userId==resource.auth.userId"
    }

    此时用户A通过小程序sdk在表中插入一条数据:

    serverless.db.collection("users").insertOne({
      name: "张三",
      age: 18
    })

    你将会在控制台看到一个插入了userid的数据:

    {
      "_id": "xxxx",
      "name": "张三",
      "age": 18,
      "auth": {"userId": "xxxxA"}
    }

    其中auth字段中的userid是系统为每个小程序用户生成的固定不变的值(前提是在控制台配置了第三方小程序秘钥鉴权)。那么这个数据将只允许用户A从客户端读写,如果用户B尝试去读写该条数据则不生效。

    权限的取值只有三种情况:

    • false 禁止所有从客户端读/写
    • true 允许所有从客户端读/写,此时从客户端插入数据则不会自带auth字段
    • request.auth.userId==resource.auth.userId 只允许资源拥有者读写

    一般做法

    为了数据安全性,一般不建议直接从客户端读写数据库,而是在云函数中读写数据库,此时操作数据不受权限约束。在云函数中可以通过api getinfo https://help.aliyun.com/document_detail/435928.html 来获取当前客户端用户信息,自行在云函数中实现相应的业务权限逻辑。

    2023-01-29 16:53:39
    赞同 展开评论 打赏

快速交付实现商业价值。

相关产品

  • 函数计算
  • 热门讨论

    热门文章

    相关电子书

    更多
    云数据库十大经典案例 立即下载
    云数据库超大流量峰值保障最佳实践 立即下载
    ApsaraDB云数据库助力优架产品升级和架构变革 立即下载