我想實現像這樣的快遞和護照的會議一個新的會話:ExpressJS創建的每一頁變化
app.use(connect.bodyParser());
app.use(express.cookieParser());
app.use(express.session({
cookie: {
path: "/",
httpOnly: true,
maxAge: null
},
store: redisStoreConnect,
secret: "something",
key: 'pksy.sid'
}));
app.use(passport.initialize());
app.use(passport.session());
passport.serializeUser (user, done) ->
done null, user.email
return
passport.deserializeUser (email, done) ->
User.findOne
email: email
, (err, user) ->
done err, user
return
return
如果我瀏覽到一個網頁在我的網站,創建一個新的會話,並存儲在Redis的。如果我刷新該頁面,會話似乎會持續。如果我導航到新頁面,或者即使關閉了選項卡並重新打開到同一頁面,也會創建新會話。
這特別令人沮喪,因爲護照只驗證爲我的登錄頁面生成的會話。如何讓我的會話在多個頁面上持續存在?
更新:感謝@robertklep提醒我檢查瀏覽器實際發回的cookie(我應該這樣做才能啓動)。事實證明,瀏覽器正在發送正確的cookie,並且驗證正在工作。這些會話實際上是持久的,但由於某種原因,每個頁面請求都會創建一個新的會話(未被瀏覽器使用)。我怎樣才能阻止呢? 「
你如何配置護照?另外,如果將maxAge設置爲超時值(會話可以有效的毫秒數),它有幫助嗎? – robertklep 2013-02-24 06:51:17
我將maxAge設置爲604800000,並且錯誤仍然存在。這是我認爲會影響會話內容的唯一兩條通行證。除了他們,我只是使用本地策略和匿名策略。 – 2013-02-25 01:11:44
你也使用'passport.serializeUser()'和'passport.deserializeUser()'嗎? – robertklep 2013-02-25 06:07:45