2016-10-24 89 views
0

當我關閉瀏覽器時,會話會自動銷燬。以下是我的app.js文件中的代碼。Session在Express JS,mongodb,Node js應用程序中自動銷燬

const session = require('express-session'); 
const MongoSessions = require('connect-mongo')(session); 
var mongo = require('mongodb').MongoClient; 
var db_url = 'mongodb://localhost:27017/test'; 

app.use(session({ 
secret: '007', 
resave: false, 
saveUninitialized: false, 
duration: 40*60 *1000, 
activeDuration: 10*60*1000, 
store: new MongoSessions({ 
    url: db_url 
}) 
})); 

當用戶登錄時,我將用戶的用戶標識存儲在會話中。當用戶再次訪問系統時,它會將他重定向到主頁。要檢查此:

exports.indexPage = function (req, res, next) { 
if (req.session.userid == null) { 
    res.render('login'); 
} else { 
    res.render('index'); 
} 

};

當我保持瀏覽器打開但關閉所有選項卡並再次訪問應用程序時,它工作正常。當我關閉瀏覽器並再次訪問應用程序時,它會將我重定向到登錄頁面。

+0

你怎麼知道會被破壞? – Richard

+0

@Richard。我編輯了我的問題。任何想法爲什麼會議瀏覽器關閉時破壞? – Kaishah

回答

1

我不確定durationactiveDuration是什麼意思,但它們不適用於express-session

由於您沒有爲會話cookie設置maxAge值,因此會自動限制爲當前瀏覽器會話,這意味着當您關閉瀏覽器時(如您已經注意到的),它將被銷燬。

爲了防止這種情況,配置maximum age(以毫秒):

app.use(session({ 
    cookie : { 
    maxAge : 40 * 60 * 1000 
    }, 
    secret: '007', 
    ... 
})); 
+0

試過了。仍然面臨同樣的問題:( – Kaishah

+0

@Kaishah首先檢查cookie是否在您的瀏覽器中持續存在(使用其開發工具) – robertklep

+0

沒有cookie被刪除.... – Kaishah

相關問題