【问题标题】:node+express+redis persistent session/remember menode+express+redis 持久会话/记住我
【发布时间】:2014-05-12 18:17:14
【问题描述】:

我正在 node 和 express 中开发。我正在尝试记住我的登录信息。我在网上阅读了很多东西,但无法正常工作。不知道有没有receipe,有的话找不到了。

我正在尝试使用 redis 和 express 会话。并且正在部分工作。 如果重启节点服务器,或者关闭并重新打开 chrome。会话处于活动状态。所以进入“/”会将我重定向到“/index.html”。

但是如果我重新启动电脑,我会丢失会话。所以进入“/”会将我重定向到“登录” 这是我服务器上的一些重要代码:

var redisClient = require('redis').createClient();
var RedisStore = require('connect-redis')(express);
app.use(bodyParser());
app.use(cookieParser());
app.use(express.session({
  store: new RedisStore({
    host: 'localhost',
    port: 6379,
    db: 0,
    cookie: { maxAge: (24*3600*1000*30)}, // 30 Days in ms
    client : redisClient
  }),
  secret: 'seeeecret'
}));

app.get('/', function(req, res, next) {
    res.redirect('/index.html');
});

app.post('/login', function(req, res) {
    function loginSuccess() {
        req.session.regenerate(function() {
            req.session.user = req.body.usuario;            
        res.sendfile('index.html', {root: './static'});
        });
    }
    function loginFailure(errText, errCode) {
        console.log("failed to login. "+errCode+": "+errText);
        res.redirect('/login');
    }
    //Imap email login (the user will authenticate with his email, end email's pass)
    checkPassword(req.body.usuario, req.body.server, req.body.password, loginSuccess, loginFailure);
});

function restrict(req, res, next) {
    if (req.session.user) { 
        next();
    } else {
        req.session.error = 'Access denied!';
        res.redirect('/login'); 
    }
}

【问题讨论】:

  • 您确定您的 redis 服务器设置为将数据持久化到磁盘吗?
  • 嗯几乎..我安装了以下官方文档。据我了解,它会保留数据。因为这就是它做(或不做)的事情

标签: node.js session express remember-me


【解决方案1】:

看来你的“cookie”放错了地方:

app.use(express.session({
  cookie: { maxAge: (24*3600*1000*30)}, // <-- where it belongs
  store: new RedisStore({
    host: 'localhost',
    port: 6379,
    db: 0,
    client : redisClient
  }),
  secret: 'seeeecret'
}));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    • 1970-01-01
    • 2013-03-11
    • 2011-01-28
    • 2013-06-30
    相关资源
    最近更新 更多