1

我是 CouchDB 的新手。我不知道我是否可以限制角色可以从文档中读取的字段。如果可以,这是使用 CouchDB 的正确方法吗?

例如,如果我有这样的文件:

{
    firstname: 'firstname',
    lastname: 'lastname',
    email: ['home': 'foobar@foobar.net', 'work': 'foobar@foobar-working.net'],
    phone: ['home': '+81 00 0000 0000'],
}

以及以下角色:

{
   "admins": {
       "names": [
           "superuser"
       ],
       "roles": [
           "admins"
       ]
   },
   "members": {
       "names": [
           "user1",
           "user2"
       ],
       "roles": [
           "developers"
       ]
   }
}

我希望管理员角色可以读取所有字段,而开发人员只能读取电子邮件和电话。我怎样才能做到这一点?使用验证功能?

4

1 回答 1

2

您帖子中描述的功能在 CouchDB 中不可用。

couchdb 中的安全性由以下术语定义(摘自 doc)

安全对象由两个强制性元素组成,admins 和 members,用于指定分别对数据库具有 admin 和 members 权限的用户和/或角色的列表:

  • 成员:他们可以从数据库中读取所有类型的文档,并且可以将文档写入(和编辑)到数据库中,设计文档除外。
  • 管理员:他们拥有成员的所有权限以及以下权限: 编写(和编辑)设计文档,添加/删除数据库管理员和成员并设置数据库修订限制。他们不能创建数据库也不能删除数据库。

在 CouchDB 中没有实现每个文档甚至每个部分文档的访问限制

目前,您可以通过在设计文档中定义验证文档更新函数来定义每个文档的写入限制。

有一个建议添加一些每个文档的访问限制,但它似乎处于开发的早期阶段。您可以在此处查看该提案。

于 2019-02-21T12:11:59.753 回答