我对CouchDB有些新意,我想知道如何创建私人文档,我希望有一个数据库,其中所有文档都是公开的(rw或r使用a validate_doc_update)除少数/一些选定的文档,我将如何做这样的事情?
为了使事情复杂化,我希望它们是由管理员私有/可访问的,但也有不同数量的选定用户(但没有其他用户)。
我想也许我可以在这些docs中有两个键叫做“private”和“private_users”,将它们设置为true,[user1,user2,user3]和以某种方式使用信息使文档成为私人/只能由他们访问。
所以基本上是关于用户能够创建文档并让所有人或他们自己和其他选定用户都可以看到它们。
执行此操作的一种方法是通过将安全管理员和成员列表设置为所有者(使数据库完全私有)来使数据库成为私有,然后通过后端脚本将所有调用路由到读取文档,后端脚本会检查这些属性通过管理员帐户获取文档并在满足条件时获取并返回内容,但事情是我想通过配置CouchDB并从客户端浏览器直接向CouchDB执行CORS HTTPS调用来实现此目的,中间。
这可能吗?
答案 0 :(得分:2)
这个问题有几种可能的解决方案:
问题:对于给定用户,只允许对数据库中给定文档的特定访问。
为每个用户创建一个数据库,并对该给定用户的数据库使用身份验证。由于视图不能跨数据库工作,因此您必须在不同的用户数据库之间复制所有需要的数据,以允许视图包含私有和公共/其他用户。数据。由于普通用户无法创建/删除数据库,因此您需要运行一个单独的进程来监视数据库的更改,并在新用户注册时创建新的用户数据库。
创建一个智能代理,使用用户凭据包装所有文档并过滤所有结果。
此解决方案在开发邮件列表中提到的google文档中进行了描述。此解决方案的目标是创建一个类似P2P的系统,您可以将数据复制到您不信任的节点。
在每次读取时调用javascript函数,方法与应用validate_doc_update系统的方式相同。
了解更多信息:
答案 1 :(得分:1)
所以基本上是关于用户能够创建文档并让他们对所有人或他们自己和其他选定用户可见......这可能吗?
不只是在couchdb ...
您在数据库中使用_security设置的权限仅对其应用写入级别安全性。 其他明智的大多数文件(设计文件除外)可供每个人阅读。具有验证功能 您可以对谁编写文档施加进一步的限制,但是再次无法检查谁在阅读您的文档。
rcouch has a validation on read可以帮助您做您想做的事情。另外,如果你想使用couchdb,你可以使用代理与它进行通信。