Как подключиться к экземпляру `mongos` через TLS/SSL, используя`connect-mongo` для `express-session`?
Я использую connect-mongo
в качестве модуля хранения для express-session
и все работало хорошо, пока я не переключился на новый 'MongoDB+' TLS/SSL
развертывание из Compose.io
и теперь я не могу подключиться.
Я не знаю их архитектуры в деталях, но больше информации можно найти здесь: Использование SSL для создания MongoDB
И здесь: Идет SSL с Compose MongoDB+
И здесь: один недостающий ключ и как он сломал Node.js
Я знаю, что когда вы подключаетесь, вы должны объявить mongos
параметры и ваш код подключения в конечном итоге выглядит так:
var fs = require('fs');
var session = require('express-session');
var MongoStore = require('connect-mongo')(session);
var ca = [fs.readFileSync('./Mongo-Key.pem')];
var url = 'mongodb://MY_MONGO_USER:[email protected]:12345,mongos2.compose.io:54321/Sessions';
app.use(session({
key : 'SessionKey',
secret : 'CATONTHEKEYBOARD',
cookie : {
path : '/',
httpOnly : true,
maxAge : null
},
store : new MongoStore({
url : url,
mongoOptions : {
mongos : {
ssl : true,
sslValidate : true,
sslCA : ca,
ca : ca,
poolSize : 1,
reconnectTries : 1
}
},
collection : 'sessions',
stringify : false
}, function(result) {
console.log('Connected to sessions db!');
return next();
})
}));
Эта строка подключения, наряду с этими параметрами подключения, работает с использованием mongo-native
Водитель. Я могу подключиться и выполнить все операции.
Но применение их в этом контексте ничего не дает. Это просто висит.
Любая идея, как я мог бы сделать вывод для дальнейшей отладки?
Спасибо за любую помощь!
1 ответ
Ну как получается connect-mongo
убрал второй аргумент (тот, который я пытался использовать в качестве обратного вызова) в более поздних версиях. Таким образом, проблема была в том, что мой обратный вызов никогда не вызывался.
Корректировка кода следующим образом - вот что сработало:
var fs = require('fs');
var session = require('express-session');
var MongoStore = require('connect-mongo')(session);
var ca = [fs.readFileSync('./Mongo-Key.pem')];
var url = 'mongodb://MY_MONGO_USER:[email protected]:12345,mongos2.compose.io:54321/Sessions';
app.use(session({
key : 'SessionKey',
secret : 'CATONTHEKEYBOARD',
cookie : {
path : '/',
httpOnly : true,
maxAge : null
},
store : new MongoStore({
url : url,
mongoOptions : {
mongos : {
ssl : true,
sslValidate : true,
sslCA : ca,
ca : ca,
poolSize : 1,
reconnectTries : 1
}
},
collection : 'sessions',
stringify : false
}).on('connected', function(result) {
console.log('Connected to sessions db!');
return next();
})
}));