我正在尝试实现一个使用ouchdb作为后端的应用程序,但是问题是, 在安装ouchdb时,ouchdb允许任何人进入ouchdb并创建/删除/更新数据库,因此我们为该couchdb服务器配置了admin(super admin)以防止匿名。如果我们在安装couchdb服务器时配置了superadmin,则普通用户无法创建数据库,因此不会为用户创建userdb。只有超级管理员有权在ouchdb中创建数据库。甚至具有“管理员”角色的用户也无法在沙发上创建数据库。
答案 0 :(得分:0)
我自己处理了所有这些事情,几乎找不到任何东西...
用户只能访问(
GET /_users/org.couchdb.user:Jan
)或修改(PUT /_users/org.couchdb.user:Jan
)他们拥有的文档
这意味着用户可以将自己添加到_users数据库中。因此,如果您打开了couch_peruser,则运行以下curl
命令将创建用户jan
和userdb-6a616e
数据库。
curl -X PUT http://localhost:5984/_users/org.couchdb.user:jan \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name": "jan", "password": "apple", "roles": [], "type": "user"}'
您可以使用db.signUp()插件中的PouchDB Authentication函数来有效地执行相同的操作。另外,在最初为新的远程PouchDB实例创建db
变量时,我不得不手动编码用户名:
function encode (str) {
return unescape(encodeURIComponent(str))
.split('').map(function (v) {
return v.charCodeAt(0).toString(16)
}).join('')
}
var db = new PouchDB('http://localhost:5984/userdb-' + encode(username), {
auth: {
username: username,
password: username
},
skip_setup: true // Because the DB won't exist initially
})