no puedo probarlo ahora mismo, pero, mirando a las fuentes, se puede observar dos cosas:
entonces creo que es necesario establecer la opción de configuración url para un nuevo valor con los parámetros de autenticación:
nano.config.url = 'http://' + params.user.name + ':' + params.user.password + '@localhost:5984';
o puede seguir un objeto de configuración como en couch.example.js y hacer algo como:
cfg.user = params.user.name;
cfg.pass = params.user.password;
nano.config.url = cfg.url;
ACTUALIZACIÓN: aquí hay un ejemplo completo:
var cfg = {
host: "localhost",
port: "5984",
ssl: false
};
cfg.credentials = function credentials() {
if (cfg.user && cfg.pass) {
return cfg.user + ":" + cfg.pass + "@";
}
else { return ""; }
};
cfg.url = function() {
return "http" + (cfg.ssl ? "s" : "") + "://" + cfg.credentials() + cfg.host +
":" + cfg.port;
};
var nano = require('nano')(cfg.url()),
db = nano.use('DB_WITH_AUTH'),
docId = 'DOCUMENT_ID';
function setUserPass(user, pass) {
cfg.user = user;
cfg.pass = pass;
nano.config.url = cfg.url();
}
db.get(docId, function (e, r, h) {
if (e) {
if (e['status-code'] === 401) {
console.log("Trying again with authentication...");
setUserPass('USENAME', 'PASSWORD');
db.get(docId, function (e, r, h) {
if (e) {
console.log("Sorry, it did not work:");
return console.error(e);
}
console.log("It worked:");
console.log(r);
console.log(h);
});
return;
}
console.log("Hmmm, something went wrong:");
return console.error(e);
}
console.log("No auth required:");
console.log(r);
console.log(h);
});
Desafortunadamente También existe la ruta generada desde la url. Intenté varias posibilidades y terminé poniendo la autenticación en el encabezado. – Patrick
@Patrick No estoy seguro de entender lo que quieres decir, así que he agregado un ejemplo de trabajo para explicar a qué me refiero. Espero que ayude a aclarar. –
Muchas gracias, lo intenté al principio. Sin embargo, encontré alguna fuente para la autenticación http, que es más fácil que reescribir todo el código cfg. Solicité una extracción en el repositorio de nodos, así que espero que la actualización esté allí pronto. – Patrick