如何在CouchDB中创建普通的非管理员用户?
如何在CouchDB中创建普通的非管理员用户?
couchdb_peruser
需要对用户名进行哈希处理以建立数据库名称的原因。您可以在用户数据库的设计文档中找到一些限制:-用户名不能以下划线开头_
-用户名不能包含冒号:
_(2019年仍然很难在网上找到答案)
Answers:
首先,您将用户放入_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_sha
和中salt
(请参见下文)。
如果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&salt来哈希密码。
然后,您可以通过在未版本控制的特定数据库中创建ID为_security的文档来创建每个数据库身份验证,例如
{
"admins": {
"names": ["dbadmin"],
"roles": ["editor"]
},
"readers": {
"names": ["dbreader"],
"roles": ["reader"]
}
}
这意味着_users
除了admin dbadmin和dbreader之外还有2个用户。如果您懒得阅读已经建议的文档,那么应该这样做。
CouchDB文档中有一篇简短的文章,内容涉及CouchDB的安全功能以及如何配置类似于关系数据库中用户的“读取器”。
_users
数据库中创建一个文档”。但是,您的链接说明了所有详细信息和含义。
我认为您必须像许多站点一样,将Web框架放在前面。Couchdb管理员角色不适用于逐条记录的记录,因此,如果您创建可以读取配置文件或帐户表的读取器,则他们可以读取记录。