Passport.js req.user对象后服务器侧文件更改未定义(节点表达)
我使用passport.js对用户进行认证,以我的应用程序,但我已经注意到,在服务器上的文件进行任何更改后,req.user不确定。 Nodemon正确重装所有的文件,但我打刷新后 - 一个应用程序被打破,req.user是不确定的。什么是重要的:当服务器端的文件发生更改时才会发生。当有没有变化我可以刷新多次,一切正常。
这是我的配置代码:
app.use(
session({
secret: process.env.EXPRESS_SESSION_KEY,
unset: 'destroy',
saveUninitialized: false,
resave: false
})
);
app.use(bodyParser.urlencoded({ extended: false, credentials: true }));
app.use(bodyParser.json());
app.use(
cors({
origin: FRONTEND_URL,
credentials: true
})
);
app.use(passport.initialize());
app.use(passport.session());
app.use(express.static('../../dist'));
我无法找到任何解决方案。这是非常恼人的服务器端的任何文件更改后,重建整个应用程序。
我也注意到,req.session是文件更改后为空。这是为什么?
回答如下:您还没有指定the store
property,所以Express会话将默认使用MemoryStore
。这在内存中保存会话数据,所以当你改变服务器端代码和触发服务器重新加载,会话存储被抹去,所有的会话数据都将丢失。
使用a different session store(如session file store),其存储数据的地方执着。