Express 和 Redis 会话无法在浏览器关闭后继续存在

Posted

技术标签:

【中文标题】Express 和 Redis 会话无法在浏览器关闭后继续存在【英文标题】:Express and Redis sessions don't survive browser close 【发布时间】:2014-01-19 10:44:40 【问题描述】:

我正在尝试使用 RedisStore 使持久会话正常工作,但是每当我关闭浏览器时,会话就会被破坏。我尝试设置 maxAge 和 ttl,但没有什么能让会话在浏览器重启后存活下来。我做错了什么?

我的代码的相关部分是:

var app = express();
var RedisStore = require('connect-redis')(express);

app.use(express.cookieParser('my secret key'));
  app.use(express.session(
  store: new RedisStore(
    host: 'localhost',
    port: 6379,
    ttl: (60000 * 24 * 30),
    cookie:  maxAge: (60000 * 24 * 30) 
  ),
  secret: 'my secret key'
));

【问题讨论】:

【参考方案1】:

cookie 应该属于你传递给 express.session 的对象,而不是你传递给 RedisStore 的对象。

尝试以下方法:

app.use(express.session(
  store: new RedisStore( host: 'localhost', port: 6379, ttl: (60000 * 24 * 30)),
  cookie:  maxAge: (60000 * 24 * 30),
  secret: 'my secret key'
));

【讨论】:

以上是关于Express 和 Redis 会话无法在浏览器关闭后继续存在的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 Vue + Express 保存会话

NodeJS redis 连接会话 ID 在应该保持不变时重新生成

GraphQL Explorer 无法与 Express 会话一起使用

在 php 和 node 之间共享会话

React 前端 + Express.js 会话

无法从带有 Socket.IO 的 cookie 中获取 Express 会话 ID