[英]Session data is not saving to memory while using express-session
當我嘗試使用不同的Express-Session版本的以下示例時遇到問題。
使用快速會話1.0.2
:
var connect = require('express'),
cookieParser = require('cookie-parser'),
session = require('express-session');
var app = connect();
app.use(cookieParser())
.use(session({secret:'sessionsecret',cookie:{maxAge:60000}}))
.use(function(req,res,next){
if(req.session.views){
res.setHeader('Content-Type','text/html');
res.write('<p>views ' + req.session.views + '</p>');
//Here
res.end();
req.session.views++;
}
else {
req.session.views = 1;
res.end('welcome to the demoe. Try refresh this page');
}
})
.listen(3000);
這有效; 刷新頁面時,視圖計數器不斷增加。 但是,當我將express-session更改為1.8.2
(最新)時,該代碼停止工作,並且視圖計數器保持為1。但是,在將代碼修改為以下代碼之后,它又可以正常工作:
var connect = require('express'),
cookieParser = require('cookie-parser'),
session = require('express-session');
var app = connect();
app.use(cookieParser())
.use(session({secret:'sessionsecret',cookie:{maxAge:60000}}))
.use(function(req,res,next){
if(req.session.views){
res.setHeader('Content-Type','text/html');
res.write('<p>views ' + req.session.views + '</p>');
//Here
req.session.views++;
res.end();
}
else {
req.session.views = 1;
res.end('welcome to the demoe. Try refresh this page');
}
})
.listen(3000);
在新的快速會話中發送響應之前,會話數據似乎已保存。 有人可以解釋嗎?
是的,在res.end()
或發送任何內容數據后, ExpressJS會話無法保存req.session
對象。
這樣做的原因是因為僅在發送標頭時才可以設置cookie(因此只能保存會話)。 發送標頭(和發送內容)后,將無法重置Cookie,也無法保存會話。
您可以在此處查看運行中的代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.