在将require_valid_user设置为true的同时,如何使CouchDB数据库对公众可读?

时间:2013-07-06 16:05:00

标签: authentication couchdb

我的目标是能够在不必对用户进行身份验证的情况下读取一个数据库,应该需要用于编辑此数据库的身份验证。所有其他数据库只应对有效用户可读/写。而且我不想为将来创建的每个数据库设置它,所需的读/写所需的身份验证应该是默认的。

我认为我可以通过将require_valid_user设置为true来实现此目的,但现在CouchDB总是要求输入用户名和密码,因此我需要一种方法来排除一个数据库。这个数据库应该是可读的,对于有效的用户来说是可写的。

1 个答案:

答案 0 :(得分:4)

通过一个数据库(即/ login)验证所有用户,我解决了这个问题。该数据库是公共的,包含一个带有HTML文件作为附件的设计文档。用户被提供此文件,在表单上填写他们的凭据,我使用jQuery.couch.js在他们的浏览器中验证和存储cookie。一旦他们获得了有效的登录,我检查userCtx对象以检查他们的角色,并将他们重定向到适当的数据库。

这是一个黑客攻击,但是当你没有登录数据库时,CouchDB能够提供登录页面而不是JSON错误消息,这是我找到的唯一可靠的方法。

确保使用设计文档中的validate_doc_update键保护您的公共登录数据库,因此除了管理员之外,没有人可以覆盖其中的任何内容。

希望这有帮助。