首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MongoDB中使用原生节点进行身份验证

在MongoDB中使用原生节点进行身份验证
EN

Stack Overflow用户
提问于 2012-09-16 15:08:10
回答 1查看 1.5K关注 0票数 0

我在我的Nodejitsu/MongoHQ应用程序中用MongoDB保存文档时遇到了问题。在本地,一切都很好,但是shell db需要身份验证,并且使用工作的user/pass失败(使用相同的凭据连接到MongoDB MongoHQ工作正常)。下面是函数:

代码语言:javascript
复制
var update_user = function(user, callback) {

    var client = new Db(db, new Server(host, port, {}));
    var update = function (err, collection) {
        collection.findOne({uid:user.id}, function(err, doc) {
            if (err) { throw err; }
            if (!doc) doc = { uid: user.id }
            doc.img = user.img;
            doc.name = user.name;

            collection.save(doc, {safe: true}, function(err, doc) {
                if (err) { throw err; }
                callback(user);
            });
        });
    };

    client.open(function(err, client) {
        if (err) { throw err; }
        client.authenticate(user, pass, function(err, result) {
            client.collection('users', update);
        });
    });
}

我到底做错了什么?

UPD: authenticate方法的err参数具有下列值:

代码语言:javascript
复制
{ [MongoError: auth fails] name: 'MongoError', errmsg: 'auth fails', ok: 0 }

我再次检查了存储的密码和用户名,它们可以在MongoHQ外壳中登录。

EN

回答 1

Stack Overflow用户

发布于 2012-09-17 02:26:27

如果您的凭据用于管理员用户帐户,则在authenticate调用中对管理员数据库执行must target操作:

代码语言:javascript
复制
client.authenticate(user, pass, {authdb: 'admin'}, function(err, result) {
    client.collection('users', update);
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12445054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档