2017-09-14 139 views
0

问题:没有饼干

登录到弹性魔豆我的部署节点的应用程序后,我就收到一个cookie,每当我通过浏览器刷新页面,我得到注销。

这里是我的快递会话设置:

app.use(session({ 
    store: new RedisStore({ 
     client: redisClient, 
     host: process.env.REDIS_HOST, 
     port: process.env.REDIS_PORT 
    }), 
    secret: process.env.SESSION_SECRET, 
    resave: false, 
    saveUninitialized: false // No cookie received until successful login 
})); 

在发展(登录后): enter image description here

在生产(登录后): enter image description here

所以虽然我可以“登录”,但我无法通过参考进行持续会话resh,因为从未发送过cookie。

可能的原因我已经排除了:

  • Elasticache:我已经设置了一个redis的实例elasticache。

  • 安全组:我已将其入站安全组配置为接受来自弹性beanstalk安全组的传入TCP连接。我甚至通过使用ssh连接到beanstalk,安装redis-cli以及成功连接到主要端点来测试这一点。

  • 负载平衡器:我的弹性beanstalk实例当前是单个节点,并且不使用负载平衡,但即使使用应用程序控制的粘性会话负载平衡,结果也是一样的。

你们有什么想法可能是错的?

回答

0

的问题是在我的配置:

有“客户”,如“新RedisStore”覆盖兄弟“主机”和“端口”密钥的密钥。

正确的配置如下:

const redisClient = redis.createClient({ 
    host: process.env.REDIS_HOST, 
    port: process.env.REDIS_PORT 
}); 

app.use(session({ 
    store: new RedisStore({ 
    client: redisClient 
    }), 
    secret: process.env.SESSION_SECRET, 
    resave: false, 
    saveUninitialized: false 
}));