2017-09-14 176 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 
}));