0

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

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作为身份验证源。

4

0 回答 0