如何确保当前用户有权通过PouchDB访问CouchDB数据库?从我的实验中,使用CouchDB数据库名称调用新的PouchDB()方法可以授予您访问该数据的权限.
在Futon中将require_valid_user设置为true似乎有效,但在通过POST/_session对用户进行身份验证后,仍然会弹出Futon模式窗口.我希望有一个标准的登录界面(用户名和密码),将用户登录到我的应用程序并授予访问正确的CouchDB数据库的权限(通过PouchDB).我可以这样做吗?任何帮助将不胜感激.
小智 7
有一个由Nolan Lawson构建的PouchDB插件,它为PouchDb提供了一个身份验证API:
var db = new PouchDB('http://mysite:5984/mydb');
db.login('batman', 'brucewayne').then(function (batman) {
console.log("I'm Batman.");
return db.logout();
});
Run Code Online (Sandbox Code Playgroud)
以下是它混合的方法:
为了防止浏览器HTTP基本身份验证模式对话,我们必须对使用PouchDB的方式进行细微处理.为了防止对CouchDB的rouge未经身份验证的请求(用于检查远程数据库是否存在),请在Pouch的构造函数选项中传递skipSetup:true.其次,要针对_session对请求进行身份验证,请将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);
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3900 次 |
最近记录: |