我已經在節點js routes.js.中實現了以下功能。在首先提供任何請求之前,會檢查isAuthenticated。req.isAuthenticated()在服務器啓動一段時間後返回false
function isLoggedIn(req, res, next) {
if (req.isAuthenticated()) {
console.log('Session Expiry '+req.session.cookie.expires);
console.log('Authenticated');
return next();
}
console.log('Not Authenticated');
res.redirect('/');
}
但是,當我刷新或打開頁面後轉到其他頁面一段時間後,它進入索引頁,而不是當前page.I發現,這是因爲req.isAuthenticated()後,一些計算結果爲假加載頁面的時間。
它爲什麼會變成錯誤?
是因爲不正確的序列化
這是我的序列化和deserilize方法,我在做正確的的,
passport.serializeUser(function (user, done) {
console.log('Serializing User');
done(null, user.id);
});
// used to deserialize the user
passport.deserializeUser(function (id, done) {
console.log('Calling Deserlize');
dbconn.user_findById(id, function (err, user) {//call to query DB
console.log('Deserializing user from DB');
done(err, user);
});
});
是它關注的cookie或會話。好心幫
感謝您的回覆Jivings,但我已經包括會話中間件app.use(express.session({secret:'mysecret',cookie:{maxAge: 12 * 3600 * 1000}}));作爲12小時 – keerthee 2014-10-20 11:37:06
這是我的序列化和deserilize方法,我正確做,passport.serializeUser(函數(用戶,完成)console.log('序列化用戶'); done(null,user.id); }); //用於反序列化用戶 passport.deserializeUser(功能(ID,完成){ 的console.log( '調用Deserlize'); dbconn.user_findById(ID,功能(ERR,用戶){//調用查詢DB console.log('從DB反序列化用戶'); done(err,user); }); }); – keerthee 2014-10-20 11:40:14