node.js - Redis Cloud 用于 Node heroku 应用程序中的 session

标签 node.js heroku redis

我有一个使用 redis 云在 Heroku 中存储 session 的 express 应用程序。几个月前它工作正常,但我刚刚重新访问它并且它不再工作了。似乎没有 session ,并抛出错误 TypeError: Cannot read property 'user' of undefined,有问题的代码行是

if (!req.session.user) {
...
...
}

也许我配置不正确

var session = require('express-session');
var RedisStore = require('connect-redis')(session);
var redis = require('redis-url').connect(config.redis_url);

var sessionMiddleware = session({
    store: new RedisStore({
        host: config.redis_host,
        port: config.redis_port
    }),
    secret: 'Its a secret.',
    cookie: { secure: true },
    saveUninitialized: true,
    resave: true
});

对应的配置文件是

module.exports = {
    mongo_url: process.env.MONGOLAB_URI || 'mongodb://127.0.0.1:27017/psa',
    redis_url: process.env.REDISCLOUD_URL || 'redis://localhost:6379',
    redis_host: taken from process.env.REDISCLOUD_URL,
    redis_port: taken from process.env.REDISCLOUD_URL,
    port: process.env.PORT || 5000
};

当我如下定义 session 中间件时,这在本地工作 forman start web

var sessionMiddleware = session({
    secret: 'VkWdLXauq6ya',
    saveUninitialized: true,
    resave: true,
    store: new RedisStore({
        client: redis
    }),
    cookie: {
        path: '/',
        maxAge: 3600000
    },
    name: 'sessionCookie'
});

最佳答案

你在使用 cookieParser 中间件吗?你需要:

app.use(express.cookieParser());

好像和这个类似other stackoverflow question .

关于node.js - Redis Cloud 用于 Node heroku 应用程序中的 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31249934/

相关文章:

javascript - 如果我使用 process.send(),node.js 会等待回调/响应

c++ - Windows 上的另一个 node-gyp 错误或实际编码错误?

security - 在 sinatra + heroku 应用程序中存储管理员密码的位置?

python - Celery WorkerLostError Worker 过早退出 : signal 6 (SIGABRT)

python - Celery:什么时候应该选择 Redis 作为消息代理而不是 RabbitMQ?

javascript - 安装@react-navigation/stack@5.14.3 时无法解析依赖树

node.js - createWriteStream 与 writeFile?

ruby-on-rails-3 - Heroku 快把我逼疯了!是我的代码极其草率,还是 Heroku 极其挑剔?

ruby-on-rails - 如何通过 Heroku 在不同的数据库服务器上运行迁移?

python - 在 redis 作业上存储 "meta"数据不起作用?