确定CouchDB访问权限的最有效方法

时间:2014-04-08 09:05:25

标签: couchdb

我使用具有per-db-and-user访问权限的CouchDB权限系统。每个数据库代表一个应用程序,它们在类似主屏幕的概述和其他地方显示。我需要一种有效的方法让CouchDB告诉我用户是否可以访问数据库 - 例如GET /_all_dbs只返回当前用户有权访问的数据库。一旦在一个页面上显示十几个以上的应用程序,轮询视图或文档就会变得太慢,尽管我仍然可以调整limit = 1的视图轮询。不是有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

查询数据库的_security文档。

curl http://localhost:5984/db_name/_security

{"admins":{"names":["dbadmin"],"roles":["reader"]},"members":{"names":[],"roles":[]}}

对于具有admins / users的每个数据库,couchdb都会创建一个名为_security的特殊文档,其中包含该数据库的所有用户的列表。您可以对该文档发出curl请求,并获取一个数组,该数组将为您提供该数据库的所有adminsmembers

修改

你知道你的应用程序最好,但我认为这是一个有用的策略吗?每个couchdb用户都存储在_users数据库中。它就像任何其他数据库一样。您可以在其上创建一个视图,然后进行查询。您甚至可以在文档中添加其他字段以帮助查询。如何在数据库上创建用户时,还要更新_users数据库中的相应文档。

现在,如果您致电_users/_all_docs?include_docs=true,您将获得一个用户列表以及他们有权访问的数据库。一个请求,您就拥有了所需的一切。