我正在考虑在CouchDB中移植一个网站,它看起来很有趣.
但是,一个很大的问题是CouchDB似乎不支持读取身份验证; 所有读者都可以访问数据库中的所有文档.
在其他地方建议为不同的读者组使用不同的数据库或在另一个(中间)层实现读者身份验证,这两个都不是这个项目的选项,其中访问由复杂的每个文档ACL确定.
我正在考虑在列表中实现身份验证,并将对CouchDb的所有访问限制为这些列表.这种限制可以通过Apache中用作反向代理的简单mod_rewrite子句来强制执行.列表将简单地获取行并检查userCtx对文档的ACL.就像是:
function(head, req) {
var row;
while (row = getRow()) {
if (row.value.ACL[req.userCtx.name])
send(row.value);
else
throw({unauthorized : "You are not allowed to access this resource"});
}
Run Code Online (Sandbox Code Playgroud)
由于我没有使用CouchDB的经验,而且我没有在任何地方阅读过这种方法,我想知道这种方法是否可行.
这是实现读取访问的方式还是我为了错误的目的而滥用列表?我不应该期望使用CouchDB可以实现这么简单的解决方案吗?