gpt4 book ai didi

node.js - 除非 Passport.js 被初始化,否则 session ID 不会持续存在

转载 作者:太空宇宙 更新时间:2023-11-04 02:24:20 25 4
gpt4 key购买 nike

我有一个简单的通用 Express 应用程序。每当命中某个路由时,它就会记录 req.sessionID。我希望刷新客户端页面会导致再次记录相同的 sessionID。如果我导入了 Passport 并在 session 中间件之后添加了 Passport 中间件,那么这是有效的。。如果我根本不使用 Passport,或者在 session 中间件之前添加 Passport 中间件,则 sessionID 每次都会不同。

我可以接受中间件的排序可能很挑剔。但是,我的应用程序根本不使用 Passport ,所以我无法理解为什么如果我不需要 Passport ,我的应用程序就无法工作。 session 是否需要 Passport 才能进行?

    //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);

最佳答案

切换到重新保存:true,saveUninitialized:true

未保存的 session 不会被保存,从而导致重复生成新的 session ID。然而,Passport 可能正在对 session 进行一些初始化,这意味着 session 不再是未经修改的。

感谢@Dodekeract 和@Swaraj Giri 在评论中解决了这个问题!

关于node.js - 除非 Passport.js 被初始化,否则 session ID 不会持续存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31375964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com