我使用passport.js来处理我的nodejs + express.js应用的身份验证。我设置了一个LocalStrategy来从mongodb获取用户。
我的问题是,当我重新启动我的node服务器时,用户必须重新进行身份验证。这是一个问题,因为我正在积极开发它,并不想在每次重启时都登录...(另外我使用的是node supervisor)
这是我的应用程序设置:
我的问题是,当我重新启动我的node服务器时,用户必须重新进行身份验证。这是一个问题,因为我正在积极开发它,并不想在每次重启时都登录...(另外我使用的是node supervisor)
这是我的应用程序设置:
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免费服务限制)
编辑2 解决方案 (作为一次编辑,因为我的声望还不够高,不能回答我的问题)
这是我最终找到的解决方案,使用mongoose初始化连接
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');
})
}));