2017-09-08 196 views
1

我正在使用express-session模塊來設置具有到期年齡的會話。在這個年齡之後,當頁面刷新時,Cookie將被刪除。但是,如用戶註銷時,我想強制刪除該Cookie。我已經成功地摧毀了使用req.session.destroy.如何強制使用快速會話刪除會話ID cookie?

我試圖使用會話:

res.clearCookie('SID').status(200).send('Page'); 

req.session.destroy,雖然,如果我查看我看到的內容設置爲無瀏覽器cookie的詳細信息,儘管cookie不會自行刪除,但過期日期設置爲Thursday, 1 January 1970 at 01:00:00,。我還在會話存儲配置中設置了unset: 'destroy',但這並未解決我的問題。

中間件:

app.use(session({ 
    store: new MemoryStore({ 
    checkPeriod: 86400000 
    }), 
    cookie: { 
    secure: true, 
    maxAge: 10000 
    }, 
    secret: secret, 
    resave: false, 
    saveUninitialized: false, 
    name: 'SID', 
    unset: 'destroy' 
})); 

在此先感謝。

回答

0

您需要強制設置值req.session.cookie.expiresreq.session.cookie.maxAge

見這個代碼peiece爲例,

var timeInMillseconds = 3600000; 
req.session.cookie.expires = new Date(Date.now() + timeInMillseconds); 
req.session.cookie.maxAge = timeInMillseconds; 

使用此中間件現在

app.use(session({ 
    secret: 'mySecre', 
    saveUninitialized: true 
})) 

app.get('/', function(req, res){ 
    req.session.myUser = "myUser"; 
    req.session.cookie.expires = new Date(Date.now() + 36000000); 
    req.session.cookie.myDog = "myDog"; 
    res.status(201).send(req.session); //you can also use 200 
    console.log(req.session); 
}) 
+0

您好,感謝試圖幫助。我做了req.session.cookie.expires = new Date(0);但這似乎甚至沒有設置cookie上的截止日期,它只是保持在配置中的默認設置。 –

+0

嘗試使用'new Date(Date.now()+ hour)'的確切代碼'也使用'req.session.save(function(err){})'爲客戶端保存它嗎? @MatthewChristopher – turmuka

+0

小時未定義。我也沒有像快速會議那樣設置會話,我將它設置爲這樣:req.session.user = value; –