我目前有兩個獨立的節點應用程序在兩個不同的端口上運行,但共享相同的後端數據存儲。我需要在兩個應用程序之間共享用戶會話,以便當用戶通過一個應用程序登錄時,他們的會話可用,並且他們似乎登錄到另一個應用程序。在這種情況下,它是一個面向公衆的網站和管理後端。節點應用程序之間的共享會話?
我們的設置是這樣的:用快遞
- 節點被用來處理身份驗證與本地戰略
- 我們使用連接,Redis的,讓我們一起分享通過Redis的會議。
- 我們的域名是這樣的:www.mydomain.com和adm.mydomain.com
爲會議的東西(和Redis的)是這兩個應用相同的配置:
session: {
options: {
secret: "my secret",
cookie: {
domain: "mydomain.com",
maxAge:1000*60*60*24
}
},
redis: {
host: 'my host',
maxAge: 86400000,
secret: "my secret"
}
}
在app.js會議東西的配置是這樣的:
if (app.settings.env === "production") {
session.options.store = new RedisStore(session.redis);
}
app.use(express.session(session.options));
app.use(passport.initialize());
app.use(passport.session({ secret: 'a different secret' }));
我希望它做什麼:讓我們看到同樣的SESS在兩個應用程序之間的Cookie中添加ion id。
所以我的問題是:如何設置express,redis和護照,以便您可以讓會話跨不同的子域共享?
我想你可能需要:
所以,這樣的事情會爲當前主1.10.1工作將cookie域指定爲'「.mydomain.com」' - 注意前面的'.'。沒有「*」的 –
?我們昨天在測試中使用了「* .mydomain.com」,但似乎沒有奏效。 今天早上我會試試看看結果是什麼。 – jpittman
你輸入了一個'*',對吧?在那種情況下,是的,只是最重要的點。我認爲這就是使Cookie可以從不同子域讀取的原因。讓我知道,我可以提供它作爲答案。 –