Elastic Beanstalk上没有收到使用Elasticache

时间:2017-09-14 04:06:40

标签: session cookies redis elastic-beanstalk amazon-elasticache

问题:

在弹性beanstalk上登录我部署的Node应用程序后,我从未收到过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

因此,当我能够"登录"时,我无法通过刷新进行持久会话,因为从未发送过cookie。

我排除了可能的原因:

  • Elasticache:我已经用redis建立了一个弹性缓存实例。

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

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

你们有什么想法可能有什么不对吗?

1 个答案:

答案 0 :(得分:0)

问题出在我的配置中:

拥有"客户"作为新的RedisStore"的关键覆盖兄弟姐妹"主持人"和" port"密钥。

正确的配置如下:

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
}));