1
我遇到了麻煩與MongoDB的會話才能正常工作。我已經設置了下面的代碼,這些代碼沒有問題就創建了用戶。存儲會話與passportjs,Express和monogodb
我也能看到我的sessions
數據庫被填充,看起來像這樣:
問題是,我從來沒有在登錄狀態。如果我只是使用內存來存儲會話,但移動到MongoDB的時候,這是行不通的,它工作正常。這裏就是我認爲這個問題的代碼,但是你可以在這裏看到整個應用程序:http://wes.io/LNVg
passport.use(new LocalStrategy(
function(username, password, done) {
console.log('Trying to log in as '.green, username);
User.findOne({ name: username }, function(err, user) {
if (err) {return done(err); }
if(user) {
console.log('Found user with the username of'.green,user);
done(null, user);
}
else {
console.log('No user found... '.red.inverse, username, password);
var user = new User();
user.name = username;
user.username = username;
user.password = password;
user.save(function(err){
if(err) { throw err; }
console.log('User created and saved'.green, user)
done(null, user);
})
};
});
}
));
passport.serializeUser(function(user, done) {
done(null, user);
});
passport.deserializeUser(function(user, done) {
done(null, user);
});
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(require('less-middleware')({ src: __dirname + '/public' }));
app.use(express.favicon());
app.use(express.bodyParser());
app.use(express.logger('dev'));
app.use(express.methodOverride());
app.use(express.session({
store: store
, secret: 'applecake'
, cookie : {
maxAge : 604800 // one week
}
}));
app.use(passport.initialize());
app.use(passport.session());
app.use(app.router);
});
編輯:這裏是會話存儲代碼:
var express = require('express')
, colors = require('colors')
, routes = require('./routes')
, mongoose = require('mongoose')
, SessionStore = require("session-mongoose")(express)
, store = new SessionStore({
url: "mongodb://localhost/fb-session",
interval: 120000 // expiration check worker run interval in millisec (default: 60000)
})
, Schema = mongoose.Schema
, flash = require('connect-flash')
, userz = require('./routes/user')
, http = require('http')
, path = require('path')
, passport = require('passport')
, LocalStrategy = require('passport-local').Strategy;
您可以發佈設置會話存儲的代碼嗎? – trebuchet
我已經添加了,請讓我知道如果你能幫助 – wesbos
嘗試使用https://github.com/masylum/connect-mongodb會話店 - 它完美的作品,我在完全相同的情況 – trebuchet