会话variables被删除
我正在使用express-session在我的NodeJS应用程序中使用Express服务器进行会话处理。
我开发了一个特定端点的API来完成会话处理,保存用户发布的数据等。
我原来用香草HTML / CSS / JS(我所熟悉的)来testingAPI的应用程序的样机。 不过,我后来用React重新编写了前端,打到了我用最初的香草应用程序编写的所有相同的端点。 但是,当我尝试使用React前端将variables保存到快速会话对象时,该variables不会保留在req.session
。 例如,在成功login尝试时,我将包含用户名的user
variables保存到req.session
。 这工作正常,如果我loggingreq.session
在这一点上的控制台,我看到对象内的variables。 但是,如果我然后击中另一个端点,并尝试访问req.session.user
variables,它不存在,虽然cookie
对象停留在req.session
。
然而,我难住的是,当我使用React应用程序时,这个问题才出现。 当我使用使用静态HTML页面的前端访问同一端点时,可以从任何端点访问来自req.session
的user
variables。 这个问题并没有出现,当我最初开发应用程序使用静态HTML页面与链接的JS文件进行AJAX调用发送/接收数据。
React应用程序在向服务器发送数据或从服务器接收数据时没有问题,但是从React应用程序调用服务器代码时执行的方式不同。 在Express应用程序运行的同一个实例中,这两个应用程序的运行方式不同。
我的代码保存user
variables:
app.post('/login', (req, res) => { username = req.body.username; password = req.body.password; queryString = 'SELECT * FROM accounts WHERE username = "' + username + '";'; connection.query(queryString, function (err, result) { if(result[0] == undefined){ console.log("user doesn't exist"); } else{ var savedPass = result[0].password; var json = {} if(bcrypt.compareSync(password, savedPass)) { console.log("success!") req.session.user = username; json.response = "correct"; console.log(req.session) } else{ console.log('wrong pass, try again'); json.response = "incorrect"; } } res.send(json); }); })
console.log(req.session)
在if(bcrypt.compareSync(password, savedPass)) {
条件输出下面的(期望的)对象:
Session { cookie: { path: '/', _expires: 2017-12-10T01:25:45.023Z, originalMaxAge: 60000, httpOnly: false }, user: 'fuckun' } }
我尝试通过在另一个端点执行req.session
variables的console.log
来接收它。 在香草应用程序中它显示了与上面显示的相同的数据,但是当我使用反应应用程序时,它会输出以下内容:
Session { cookie: { path: '/', _expires: 2017-12-10T01:25:48.499Z, originalMaxAge: 60000, httpOnly: false } }
该对象缺lessuser
variables。
我不知道发生了什么事,我一直在search谷歌,试图debugging这个问题近一个星期。 我不明白为什么当不同的客户端碰到相同的端点时,服务器端代码的性能会有所不同。
任何关于这个问题的帮助或信息将不胜感激。