每个用户和安全性一个数据库

时间:2018-09-13 05:46:28

标签: security couchdb pouchdb

我正在尝试实现一个使用ouchdb作为后端的应用程序,但是问题是, 在安装ouchdb时,ouchdb允许任何人进入ouchdb并创建/删除/更新数据库,因此我们为该couchdb服务器配置了admin(super admin)以防止匿名。如果我们在安装couchdb服务器时配置了superadmin,则普通用户无法创建数据库,因此不会为用户创建userdb。只有超级管理员有权在ouchdb中创建数据库。甚至具有“管理员”角色的用户也无法在沙发上创建数据库。

1 个答案:

答案 0 :(得分:0)

我自己处理了所有这些事情,几乎找不到任何东西...

来自documentation

  

用户只能访问(GET /_users/org.couchdb.user:Jan)或修改(PUT /_users/org.couchdb.user:Jan)他们拥有的文档

这意味着用户可以将自己添加到_users数据库中。因此,如果您打开了couch_peruser,则运行以下curl命令将创建用户januserdb-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
})