Я використовую Passport.js для обробки автентифікації в моїй програмі nodejs + express.js. Я налаштував LocalStrategy для прийому користувачів з mongodb
Мої проблеми полягають у тому, що користувачі повинні повторно пройти автентифікацію, коли я перезапускаю свій сервер вузлів . Це проблема, оскільки я активно її розробляю і не хочу входити під час кожного перезапуску ... (+ я використовую нагляд за вузлом)
Ось установка мого додатка:
app.configure(function(){
app.use('/static', express.static(__dirname + '/static'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.session({secret:'something'}));
app.use(passport.initialize());
app.use(passport.session());
app.use(app.router);
});
І налаштування серіалізації сеансу:
passport.serializeUser(function(user, done) {
done(null, user.email);
});
passport.deserializeUser(function(email, done) {
User.findOne({email:email}, function(err, user) {
done(err, user);
});
});
Я спробував рішення, подане в блозі (видалив посилання, оскільки його більше не існує), використовуючи connect-mongodb без успіху
app.use(express.session({
secret:'something else',
cookie: {maxAge: 60000 * 60 * 24 * 30}, // 30 days
store: MongoDBStore({
db: mongoose.connection.db
})
}));
РЕДАКТУВАТИ додаткову проблему: слід встановити лише одне підключення (використання одного безкоштовного сервісу Mongohq з обмеженим з'єднанням)
Рішення EDIT 2 (як видання, як я вважаю, моя репутація поки що низька, щоб відповісти на моє запитання
Ось рішення, яке я нарешті знайшов, використовуючи з'єднання, ініційоване мангустом
app.use(express.session({
secret:'awesome unicorns',
maxAge: new Date(Date.now() + 3600000),
store: new MongoStore(
{db:mongoose.connection.db},
function(err){
console.log(err || 'connect-mongodb setup ok');
})
}));