2017-07-26 99 views
0

我正在开发一个使用PouchDB(客户端)和CouchDB(服务器端)的移动应用程序。Couchdb应用过滤服务器端

我需要确保文档以允许用户只读/写自己的文档。

我做了这样的过滤器,是这样的:

function(doc, req) { 
    return doc.owner == req.userCtx.name || doc.sharedWith == req.userCtx.name; 
} 

和它工作得很好,但只有来自客户端的请求包括过滤器:

/somedatabase/_alldocs?filter=filter/secure 

我需要CouchDB的使用在每个请求中过滤,有或没有客户端指明,出于明显的安全原因。这甚至有可能吗?否则,哪个是解决这些安全问题的正确方法?

还有一个类似的问题here但答案不适用于我的情况,因为我需要在用户之间共享文档并在所有数据库之间复制它们不是一个有效的选项。

回答

2

所以我不知道你是否看过这个wiki,但它列出了几个可用的选项。其中一些已经过时了。

每个用户数据库

可能是最流行的解决方案。如您所说,您需要与其他用户共享文档。这可以通过以下方式完成:

  1. 分享时将文档复制到其他用户。你可以有一个deamon来监听_changes feed并更新其他用户数据库中的作者文件。
  2. 构建Web服务来访问共享文件(非常类似于代理解决方案)

智能代理

建立在你的数据库的前一个智能代理的作用,并做一些业务逻辑来获取文件。这使您可以更好地控制数据流,但肯定会变慢。

的validate_doc_read服务器功能能吸引你,但它从来没有CouchDB的发行版的一部分(由于上市限制)。

0

呃,可能不是。我们正在开发的应用程序需要与不同的用户共享文档。任何文档都可以与不同组用户共享