私はプロジェクトでexpress-sessionsを使用していますが、セッション記憶域で使用するためにブラウザにCookieを作成するときを理解するのには苦労しています。express-sessionsを使用しているときにCookieが作成されるのはいつですか?
自分のホームページ(「/」)をリクエストすると、クッキーは作成されませんが、他のページをリクエストするとクッキーが作成されます。ホームページ(「/ user/signup」)から離れている場合は、ブラウザから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