在CouchDB中创建常规用户

时间:2010-09-10 12:54:25

标签: couchdb

如何在CouchDB中创建常规的非管理员用户?

3 个答案:

答案 0 :(得分:87)

首先,您将用户放在_users数据库中。文档的ID必须为org.couchdb.user:username,例如

使用CouchDB 1.2.0或更高版本时,请使用:

{
    "_id": "org.couchdb.user:dbreader",
    "name": "dbreader",
    "type": "user",
    "roles": [],
    "password": "plaintext_password"
}

CouchDB将哈希&在服务器端为您添加密码并将值保存在password_shasalt字段中(见下文)。

使用CouchDB< 1.2.0用户文档需要如下所示:

{
    "_id": "org.couchdb.user:dbreader",
    "name": "dbreader",
    "type": "user",
    "roles": [],
    "salt": "54935938852dd34f92c672ab31e397cedaf0946d",
    "password_sha": "42253ea4461a604f967813aaff90b139d7018806"
}

请注意,CouchDB 1.3.0及更高版本将使用PBKDF2而不是aha&用于哈希密码的盐。

然后,您可以通过在未版本化的特定数据库中创建具有id _security的文档来创建每个数据库身份验证,例如

{
    "admins": {
        "names": ["dbadmin"],
        "roles": ["editor"]
    },
    "readers": {
        "names": ["dbreader"],
        "roles": ["reader"]
    }
}

这意味着除了admin dbadmin dbreader 之外,_users中有2个用户。如果您懒得阅读已经建议的文档,那应该这样做。

答案 1 :(得分:17)

CouchDB文档有一篇关于CouchDB的security features以及如何配置“reader”的简短文章,它类似于关系数据库中的用户。

答案 2 :(得分:-11)

我认为你必须在前面放置一个Web框架,以便像许多网站那样做。 Couchdb管理员角色不能逐个记录,因此如果您创建一个可以阅读配置文件或帐户表的读者,他们就可以阅读记录。