我正在使用PouchDB
(客户端)和CouchDB
(服务器端)开发移动应用。
我需要保护文档才能允许用户只读/写自己的文档。
我为此做了一个过滤器,例如:
function(doc, req) {
return doc.owner == req.userCtx.name || doc.sharedWith == req.userCtx.name;
}
并且效果很好,但前提是来自客户端的请求包含过滤器:
/somedatabase/_alldocs?filter=filter/secure
出于明显的安全原因,我需要CouchDB在每个请求中使用过滤器,无论是否有客户端说明。这甚至可能吗?否则哪个是处理这些安全问题的正确方法?
有一个类似的问题here,但答案不适用于我的情况,因为我需要在用户之间共享文档并在所有数据库之间复制它们不是一个有效的选项。
答案 0 :(得分:2)
所以我不知道你是否看过这个wiki,但它列出了几个可用的选项。其中一些已经过时了。
可能是最受欢迎的解决方案。正如您所说,您需要与其他用户共享文档。这可以通过以下方式完成:
在数据库前构建智能代理并执行一些业务逻辑来获取文档。这使您可以更好地控制数据流,但肯定会更慢。
validate_doc_read服务器功能可能会引起您的兴趣,但它从未成为CouchDB发布的一部分(由于列出的限制)。
答案 1 :(得分:0)