Authentication 如何在CouchDB数据库中创建私人文档和公共文档?

Authentication 如何在CouchDB数据库中创建私人文档和公共文档?,authentication,couchdb,privacy,Authentication,Couchdb,Privacy,我对CouchDB有点陌生,我想知道如何制作私有文档,也就是说,我希望有一个数据库,其中所有文档都是公共的(rw,或r使用),除了少数/一些选定的文档,我将如何做这样的事情 更复杂的是,我希望它们是管理员的私有/可访问的,但也要改变所选用户的数量(但不包括其他用户) 我在想,也许我可以在这些文档中有两个键,分别称为“private”和“private_users”,将它们设置为true和[user1,user2,user3],并以某种方式使用这些信息使文档私有/只能由它们访问 因此,从本质上讲,

我对CouchDB有点陌生,我想知道如何制作私有文档,也就是说,我希望有一个数据库,其中所有文档都是公共的(rw,或r使用),除了少数/一些选定的文档,我将如何做这样的事情

更复杂的是,我希望它们是管理员的私有/可访问的,但也要改变所选用户的数量(但不包括其他用户)

我在想,也许我可以在这些文档中有两个键,分别称为“private”和“private_users”,将它们设置为true和[user1,user2,user3],并以某种方式使用这些信息使文档私有/只能由它们访问

因此,从本质上讲,它是关于用户能够创建文档并使其对所有人可见,或者仅对他们自己和其他选定用户可见

一种方法是通过将安全管理员和成员列表设置为所有者(使数据库完全私有),使数据库私有,然后通过后端脚本将所有调用路由到读取文档,该脚本通过管理员帐户检查文档的这些属性,如果满足条件,则获取并返回内容,但问题是我希望通过配置CouchDB来实现这一点,并从客户端浏览器直接向CouchDB执行CORS HTTPS调用,中间没有脚本。< /P> 这可能吗

因此,本质上,它是关于用户能够创建文档并使其对所有人可见,或者仅对他们自己和其他选定用户可见。。。。。。这可能吗

不仅仅是couchdb

在数据库中使用_security设置的权限仅对其应用写级别安全性。 其他方面,大多数文件(设计文件除外)可供每个人阅读。使用验证函数 您可以对谁编写文档施加进一步的限制,但同样无法检查谁正在阅读您的文档


这可以帮助你做你想做的事。另一方面,如果您想使用couchdb,可以使用代理与之通信。

此问题有几种可能的解决方案:

问题是:对于给定的用户,只允许特定访问数据库中给定的文档

  • 每个用户的数据库:
为每个用户创建一个数据库,并对该给定用户的数据库使用身份验证。由于视图不能跨数据库工作,因此必须在不同的用户数据库之间复制所有需要的数据,以便视图同时包含私有和公共/其他用户的数据。因为普通用户不能创建/删除数据库,所以您需要运行一个单独的进程来监视数据库的更改,并在新用户注册时创建一个新用户数据库

  • 智能代理:
创建一个智能代理,该代理使用用户凭据包装所有文档并过滤所有结果

  • 基于每个用户的文档加密:
开发邮件列表中提到的google文档中描述了此解决方案。此解决方案的目标是创建一个类似P2P的系统,在该系统中,您可以将数据复制到不信任的节点

  • 验证\u读取\u文档:
在每次读取时调用javascript函数,方法与应用validate_doc_update系统相同

有关更多信息: