小编Rap*_*aph的帖子

NodeJS redis connect会话ID在保持持久性时会重新生成

我尝试在NodeJS中使用Redis的标准会话持久性:

var express = require('express');
var RedisStore = require('connect-redis')(express);
var app = module.exports = express.createServer();

// Configuration

app.configure(function(){
  app.use(express.bodyParser());
  app.use(express.cookieParser());
  app.use(express.session({ 
    secret: "keyboard cat", 
    store: new RedisStore, 
    key: 'sid' 
  }));
});


app.get('/', function (req, res) {
  if (req.session.isValid) {
    console.log("There is an existing session.");
  }
  else {
    req.session.isValid = true;
    console.log("New session.");
    console.log('Old session ID: ' + req.header('Cookie'));
    console.log('New session ID: ' + req.session.id);
  }

  res.render('index', {'title': s});
});
app.listen(4000);
Run Code Online (Sandbox Code Playgroud)

从理论上讲,我应该看到"新会议"这一行.网站的一次和所有后续调用应导致"存在现有会话".不幸的是,每次调用都会重新生成新的会话ID.浏览器中的cookie工作正常,内容正确传输,我可以看到它

req.header('Cookie')
Run Code Online (Sandbox Code Playgroud)

这是控制台日志的样子:

[app.js] New session.
[app.js] Old session ID: …
Run Code Online (Sandbox Code Playgroud)

session redis node.js express express-session

10
推荐指数
1
解决办法
2324
查看次数

标签 统计

express ×1

express-session ×1

node.js ×1

redis ×1

session ×1