一尘不染

Node.js + express.js + passport.js:在服务器重启之间保持身份验证

node.js

我使用password.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
    })
}));

编辑 其他问题:仅应建立一个连接(使用一项connexion有限的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');
        })
}));

阅读 242

收藏
2020-07-07

共1个答案

一尘不染

有一个名为 connect-mongo的开源程序
可以完全满足您的需要-将会话数据保留在mongodb中

使用示例(重用已mongoose打开的连接):

var session = require('express-session');
var MongoStore = require('connect-mongo')(session);
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/sess');
app.use(express.session({
    secret:'secret',
    maxAge: new Date(Date.now() + 3600000),
    store: new MongoStore(
    // Following lines of code doesn't work
    // with the connect-mongo version 1.2.1(2016-06-20).
    //    {db:mongoose.connection.db},
    //    function(err){
    //        console.log(err || 'connect-mongodb setup ok');
    //   }
    {mongooseConnection:mongoose.connection}
    )        
}));

您可以在这里了解更多信息:https :
//github.com/kcbanner/connect-mongo

2020-07-07