即使已指定,Mongoose也会继续尝试使用错误的admin db进行身份验证

时间:2017-01-11 17:30:11

标签: mongodb express mongoose express-session connect-mongo

与数据库的初始连接似乎可以通过以下方式验证:

mongoose.connect('mongodb://user:pass@localhost/traderdb/?authSource=admin', {
    auth: {
        authdb: "admin"
    }
    }, function(e) {
        //other things
});

然后,当我尝试创建一个新会话并验证用户一切崩溃时,在mongo日志中我可以看到应用程序尝试使用traderdb数据库而不是管理数据库使用mongodb进行身份验证,即使我正确设置了authSource,并且第一次使用相同的URI连接正常。

这是我初始化会话存储的地方。这是放在mongoose.connect电话的回调中。

app.use(session({
    secret: 'secrettexthere',
    saveUninitialized: true,
    resave: true,
    store: new MongoStore({
        url: 'mongodb://user:pass@localhost/traderdb/?authSource=admin',
        db: 'traderdb',
        collection: 'sessions',
        auto_reconnect: true
    })
}));

应用程序启动时没有任何操作失败,并且mongo日志确认已成功建立连接并使用admin数据库进行身份验证。然而,在那之后,当我尝试实际使用会话存储时,应用程序崩溃并出现错误Error: Error setting TTL index on collection : sessions。在mongo服务器日志中,我可以看到我的应用程序尝试使用traderdb而不是admin作为身份验证源进行连接和身份验证。

0 个答案:

没有答案