Couchdb 数据库同步授权?

Couchdb 数据库同步授权?,couchdb,pouchdb,Couchdb,Pouchdb,如何确保当前用户有权通过PockDB访问CouchDB数据库?在我的实验中,使用CouchDB数据库名调用新的PockDB()方法可以访问该数据 在Futon中将require_valid_user设置为true似乎有效,但通过POST/_会话验证用户后,Futon模式窗口仍会弹出。我希望有一个标准的登录屏幕(用户名和密码),将用户登录到我的应用程序中,并授予对正确的CouchDB数据库的访问权(通过PockDB)。我能做这个吗?任何帮助都将不胜感激。有一个由Nolan Lawson构建的Poc

如何确保当前用户有权通过PockDB访问CouchDB数据库?在我的实验中,使用CouchDB数据库名调用新的PockDB()方法可以访问该数据


在Futon中将require_valid_user设置为true似乎有效,但通过POST/_会话验证用户后,Futon模式窗口仍会弹出。我希望有一个标准的登录屏幕(用户名和密码),将用户登录到我的应用程序中,并授予对正确的CouchDB数据库的访问权(通过PockDB)。我能做这个吗?任何帮助都将不胜感激。

有一个由Nolan Lawson构建的PockDB插件,为PockDB提供身份验证API:

var db = new PouchDB('http://mysite:5984/mydb');
db.login('batman', 'brucewayne').then(function (batman) {
  console.log("I'm Batman.");
  return db.logout();
});
以下是它混合使用的方法:

  • 报名
  • 登录
  • 注销
  • getSession
  • getUser
为了防止旧时代的浏览器HTTP基本身份验证模式对话框,我们必须在使用数据库的方式上保持谨慎。为了防止rouge未经验证的对CouchDB的请求(用于检查远程DB是否存在),请在Pocket的构造函数选项中传递skipSetup:true。其次,要根据_会话对请求进行身份验证,请将HTTP基本授权头添加到db.login()的AJAX选项中

var user = {
  name: 'admin',
  password: 'admin'
};

var pouchOpts = {
  skip_setup: true
};

var ajaxOpts = {
  ajax: {
    headers: {
      Authorization: 'Basic ' + window.btoa(user.name + ':' + user.password)
    }
  }
};

var db = new PouchDB('http://localhost:5984/test', pouchOpts);

db.login(user.name, user.password, ajaxOpts).then(function() {
  return db.allDocs();
}).then(function(docs) {
  console.log(docs);
}).catch(function(error) {
  console.error(error);
});

我使用数据库身份验证进行同步

 npm i pouchdb-authentication
插件导入

var PouchDB = require("pouchdb");
PouchDB.plugin(require('pouchdb-authentication'));
代码:


您可能想签出此插件,
skipSetup
属性已更改为
skip\u setup
var localDb = new PouchDB('mydatabase');
var remoteDb = new PouchDB('http://localhost:5984/mydatabase', {skip_setup: true});

remoteDb.login(username, password).then(function () {
  localDb.sync(remoteDb, {live: true, retry: true, /* other sync options */});
});