【发布时间】:2015-01-28 04:41:02
【问题描述】:
我对 node 还是很陌生,正在尝试使用 express + redis 进行会话管理。
我当前的项目要求将用户重定向到外部站点进行身份验证。身份验证后,浏览器被重定向到我指定的回调 url。我需要会话数据在重定向中保持不变。
我的实现如下:
- 用户触发对 nodeJS 服务器的 POST 调用,我通过
req.session.foo = 'bar'将数据持久化到会话,然后将 auth_url 返回到浏览器。 - 浏览器使用
window.location.replace(auth_url);重定向到外部站点进行身份验证 - 身份验证后,浏览器被重定向到
localhost:3000/mycallbackurl,这是一个定义如下的路由(请原谅格式不佳):
router.get('/mycallback', function(req, res) {
console.log("data at callback: " + req.session.foo); //do other stuff});
我现在的问题是控制台在回调路由处打印:data at callback: undefined。
这是我的 redis 设置的问题,还是我在这里遗漏了什么?
到目前为止,我已经通过在每次浏览器刷新时递增 req.session 中存储的值并打印它来确定 redis 正在工作。
我的redis设置如下:
var session = require('express-session');
var RedisStore = require('connect-redis')(session);
app.use(cookieParser());
app.use(session({ store: new RedisStore({
host: 'localhost',
port: 6379,
db: 1,
cookie: { maxAge: (24*3600*1000*30)},
}), secret: 'keyboard cat',
saveUninitialized: true,
resave: true
}));
感谢您的阅读,期待您的回复!
【问题讨论】:
标签: javascript node.js session redis session-cookies