相关疑难解决方法(0)

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

我使用passport.js来处理我的nodejs + express.js应用程序上的auth.我设置了一个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);
});
Run Code Online (Sandbox Code Playgroud)

会话序列化设置:

passport.serializeUser(function(user, done) {
    done(null, user.email);
});

passport.deserializeUser(function(email, done) {
    User.findOne({email:email}, function(err, user) {
        done(err, user);
    });
});
Run Code Online (Sandbox Code Playgroud)

我尝试使用connect-mongodb在博客上给出的解决方案(删除链接,因为它不再存在),但没有成功

app.use(express.session({
    secret:'something else',
    cookie: {maxAge: 60000 * 60 * 24 * 30}, // 30 days
        store: MongoDBStore({
        db: mongoose.connection.db
    })
}));
Run Code Online (Sandbox Code Playgroud)

编辑附加问题:只应该建立一个连接(使用一个连接有限的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){ …
Run Code Online (Sandbox Code Playgroud)

node.js express

70
推荐指数
3
解决办法
4万
查看次数

持有护照,mongodb和快递的会议

我正在使用护照来处理我的应用程序中的身份验证和会话.我正在使用mongostore坚持使用mongodb.

设置工作正常.但是,当我重新启动服务器时,所有用户都被注销,因此显然会话被保留在内存中而不是仅保留到mongodb.我正在尝试实现用户在重新启动服务器时仍然登录的设置.

基本配置如下

中间件

    app.use(express.cookieParser('your secret here'));
    app.use(express.session());
    app.use(passport.initialize());
    app.use(passport.session({
        maxAge: new Date(Date.now() + 3600000),
        store: new MongoStore(
            {
                db: mongodb.Db(
                    conf.mongodbName,
                    new mongodb.Server(
                        'localhost',
                        27017,
                        {
                            auto_reconnect: true,
                            native_parser: true
                        }
                    ),
                    {
                        journal: true
                    }
                )
            },
            function(error) {
                if(error) {
                    return console.error('Failed connecting mongostore for storing session data. %s', error.stack);
                }
                return console.log('Connected mongostore for storing session data');
            }
        )
    }));
Run Code Online (Sandbox Code Playgroud)

护照

passport.use(new LocalStrategy(
    {
        usernameField: 'email',
        passwordField: 'password'
    },
    function(email, password, done) {
        console.log('user %s attempting …
Run Code Online (Sandbox Code Playgroud)

mongodb node.js express passport.js

19
推荐指数
1
解决办法
2万
查看次数

标签 统计

express ×2

node.js ×2

mongodb ×1

passport.js ×1