Node.js + express.js + passport.js: pozostań uwierzytelniony między restartem serwera
Używam passport.js do obsługi autoryzacji w mojej aplikacji nodejs + express.js. Skonfigurowałem LocalStrategy, aby zabrać użytkowników z mongodb
Moje problemy są takieużytkownicy muszą ponownie uwierzytelnić się po zrestartowaniu serwera węzła. Jest to problem, ponieważ aktywnie go rozwijam i nie chcę się logować przy każdym restarcie ... (+ Używam nadzorcy węzła)
Oto moja konfiguracja aplikacji:
<code>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); }); </code>
I konfiguracja serializacji sesji:
<code>passport.serializeUser(function(user, done) { done(null, user.email); }); passport.deserializeUser(function(email, done) { User.findOne({email:email}, function(err, user) { done(err, user); }); }); </code>
Spróbowałem rozwiązania podanego na blogu (usunąłem link, ponieważ już nie istnieje) za pomocą connect-mongodb bez powodzenia
<code>app.use(express.session({ secret:'something else', cookie: {maxAge: 60000 * 60 * 24 * 30}, // 30 days store: MongoDBStore({ db: mongoose.connection.db }) })); </code>
EDYTOWAĆ dodatkowy problem: należy wykonać tylko jedno połączenie (korzystanie z jednego połączenia ograniczonej bezpłatnej usługi mongohq)
EDYCJA 2 rozwiązanie (jako wydanie, ponieważ moja reputacja jest niska, aby odpowiedzieć na moje pytanie
Oto rozwiązanie, które w końcu znalazłem, używając połączenia inicjowanego przez mangusta
<code>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'); }) })); </code>