服务器重启期间保持护照会话存活

时间:2014-04-26 12:22:35

标签: javascript node.js express passport.js

有没有办法可以通过服务器重启来维护用户会话,以帮助保持我的开发良好和快速?

我正在我的机器上本地处理ExpressJS节点项目。我使用Grunt-nodemon观看我的JS文件,并在我做了更改后重新启动服务器。这意味着我的项目中的任何会话(用户登录)都被擦干净了。

目前,如果我在某个深层页面并重新启动,我会跳到登录页面并重新导航,这真的令人沮丧。

我使用护照作为会话中间件。我使用mongoose作为我的主要应用程序数据存储区,如果我能以某种方式使用它将是超级的。

1 个答案:

答案 0 :(得分:7)

只需简单使用任何存储方法即可。

一种选择是使用Redis。

以下是使用connect-redis模块的示例:

    app.use(express.cookieParser());
    var session = require('express-session');
    var RedisStore = require('connect-redis')(session);
    app.use(express.session(
        {
            store: new RedisStore(
                {
                    host: '127.0.0.1',       //where redis store is
                    port: 6379,              //default redis port
                    prefix: 'sess',          //prefix for sessions name is store
                    pass: 'passwordtoredis'  //password to redis db
                }
            ),
            secret: 'cookiesecret',        //cookie secret
            key: 'express.sid'
        }

));

它可以更简洁,但它应该运作良好。

设置redis很容易; redis网页有一个很好的教程:http://redis.io/topics/quickstart

请记住,默认情况下redis会将会话存储在内存中,这意味着如果重新启动硬件,会话将会丢失(但有一个选项可以使其保持http://redis.io/topics/persistence

希望这有助于:)