我有一个简单的通用快递应用程序。只要某个路线被击中,它就会记录req.sessionID
。我希望刷新客户端页面会导致再次记录相同的sessionID
。如果我已导入护照并在会话中间件之后添加了护照中间件,则可以使用。如果我要么根本不使用护照,要么在会话中间件之前添加护照中间件,那么sessionID
每次都不同。
我可以接受中间件的排序可能很挑剔。但是,我的应用程序根本不使用护照,因此如果我不需要护照,我无法理解为什么我的应用程序无法正常工作。 会议是否需要护照?
//generic express initialization
var http = require('http');
var express = require('express');
var cookieParser = require('cookie-parser');
var passport = require('passport');
var session = require('express-session');
var app = express();
var server = http.createServer(app);
var sessionMiddleware = session({resave: false, saveUninitialized: false, secret: 'hunter2'});
app.use(cookieParser());
//This works:
app.use(sessionMiddleware);
app.use(passport.initialize());
//This doesn't:
app.use(passport.initialize());
app.use(sessionMiddleware);
答案 0 :(得分:0)
切换到resave: true, saveUninitialized: true
未保存未修改的会话,从而导致重复生成新的会话ID。但是,Passport可能会在会话中进行一些初始化,这意味着会话不再是未修改的。
感谢@Dodekeract和@Swaraj Giri在评论中解决问题!