node.js - 为什么node express req.session随着redis消失了?

标签 node.js session express redis

Node.js express session 使用这段代码非常适合我:

var express = require("express");
var app = express();
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({
    cookie: {maxAge: pembapp.dayInMilliseconds * 180},
    secret: 'mysecret',
    key: 'mykey'
}));

我可以毫无问题地访问 req.session.whatever。

现在我想用redis来存储session数据,以防服务器重启,所以代码变成了这样:

var express = require("express");
var app = express();
var RedisStore = require('connect-redis')(express);
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({
    cookie: {maxAge: pembapp.dayInMilliseconds * 180},
    secret: 'mysecret',
    key: 'mykey',
    store: new RedisStore({
        host: 'localhost',
        port: 6379,
        db: 2,
        prefix: 'myprefix',
        pass: 'mypasswd'
    })
}));

当我添加 redis 代码时,req.session 现在未定义!我这辈子都想不通。为什么当我为 session 添加 redis 存储时 req.sesion 会“消失”???

最佳答案

我想我们可以结束这个了。也许当 req.session 未定义时我没有连接到 redis。我确实发现我需要在使用 redis 时显式调用 req.session.save(),而没有 redis 则不需要。

从我在那里看到的问题来看,如果有人可以使用 redis-connect 为持久 session 创建一个清晰的 node.js 示例,对于 Node 新手,从头开始,我想你会成为一群人很开心。

关于node.js - 为什么node express req.session随着redis消失了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19733731/

相关文章:

node.js - 访问在 docker 容器内运行的数据库?

session - struts2中如何实现绑定(bind)用户登录的session?

javascript - 如何在每个新月安排 node-cron 作业?

php - 如何在 Symfony Controller 和在内存缓存中管理 session 的经典独立 php 脚本之间共享 session 数据?

java - 在不同的应用程序版本之间动态移动 session 特定数据

html - 在页面加载时设置选项的背景颜色

javascript - 迭代数组并保存对象后的回调

json - 使用 jQuery 发布 json 来表达

node.js - 使用 node.js 对查询进行 Sequelize

Node.js Stream API 泄​​漏