1
我有一个简单的通用快速应用程序。每当某条路线被击中时,它就会记录req.sessionID
。我认为刷新客户端页面会导致再次登录相同的sessionID
。如果我已经导入护照并在会话中间件后添加了护照中间件,则这起作用,。如果我根本没有使用护照,或者我在会话中间件之前添加了护照中间件,那么sessionID
每次都是不同的。除非passport.js被初始化,否则会话ID不会保留
我可以接受中间件的排序可以挑剔。然而,我的应用根本不使用护照,所以我无法理解为什么我的应用不工作,如果我不需要护照。 会议需要护照吗?
//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);
您是否尝试添加sessionstore?另外:“saveUninitialized”禁用保存未修改的会话。这可能会导致你正在经历的行为。 – Dodekeract
试试'resave:true,saveUninitialized:true'。 –
将它们设置为true做到了!我在会话文档中发现了这一点:“请注意,如果您将Session与PassportJS结合使用,Passport会在用户通过身份验证后向会话中添加一个空的Passport对象,以作为对会话的修改,从而导致它被保存起来。“身份验证没有发生,但推测是护照正在添加其他内容。 如果你们其中一个人想要添加答案,我很乐意接受它! – akroy