2
我在一個項目中使用快速會話,我很努力地瞭解它何時在瀏覽器上創建一個用於會話存儲的cookie。什麼時候使用快速會話創建一個cookie?
在我的項目中,當我請求我的主頁(「/」)時,沒有創建cookie,但是當我請求任何其他頁面時,創建了一個cookie。如果我遠離主頁(即「/ user/signup」),請從瀏覽器中刪除cookie,然後返回主頁,但不會爲會話存儲創建cookie。
我的問題是理解爲什麼它會爲除主頁以外的其他請求創建會話cookie。
var app = express();
app.use(express.static(path.join(__dirname, 'public')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(validator());
app.use(cookieParser());
app.use(session({
secret: 'mysupersecret',
resave: false,
saveUninitialized: false,
store: new mongoStore({
mongooseConnection: mongoose.connection
}),
cookie: {maxAge: 180 * 60 *1000}
}));
app.use(flash());
app.use(passport.initialize());
app.use(passport.session());
app.use('/user', userRoutes)
app.use('/', indexRoutes);
router.get('/', function(req, res, next) {
Product.find(function(err, docs){
if(err){
console.log(err);
} else {
var prodRows = [];
var rowLength = 3;
for(var i = 0; i < docs.length; i += rowLength){
prodRows.push(docs.slice(i, i + rowLength))
};
res.render('shop/index', { title: 'Shopping Cart', prods: prodRows});
}
});
});
router.get('/user/signin', function(req, res, next){
console.log('Session2: ', req.session);
console.log('Cookies2: ', req.cookies);
var messages = req.flash('error');
console.log('Session3: ', req.session);
console.log('Cookies3: ', req.cookies);
res.render('user/signin', { csrfToken: req.csrfToken(), messages: messages, hasErrors: messages.length > 0});
});
任何幫助將不勝感激。
在這種情況下,在你的代碼中使用https://www.npmjs.com/package/connect-mongo包。它將會話保存到MongoDB中 – Mikhail
爲什麼沒有爲該首頁創建會話cookie? – 2K01B5
瀏覽器限制Cookie每個域的最大大小爲4千字節 – Mikhail