Express-session变量在加载api后改变
express-session variable is changed after loading api
我是expressjs的新手,我的问题与express-session有关。
app.js在包的下面。我已经安装了express和express-session。
如果我转到'localhost:3000',在控制台中,request .session.flag的值将改变如下:
One before: undefined
1
两个前:1
2
之后,如果我转到'localhost:3000/three',在控制台中,req.session.flag的值将改变如下:
Three before: 2
3
如果我此时刷新'localhost:3000/three', req.session.flag的值将是2而不是3。
Three before: 2
3
为什么会这样?req.session.flag的值从前一点改为3,为什么在控制台中它从2开始?
,如果我去'localhost:3000', req.session.flag的值也将从2开始,为什么会这样?
One before: 2
1
两个前:1
2
谢谢!
var express = require('express');
var session = require("express-session");
var post = require('./routes/post');
var app = express();
var port = 3000;
app.use(session({secret:'fdsadfasdfdsafdsafdsafdsafd', saveUninitialized:false, resave: false}));
app.get('/', function (req, res, next) {
console.log("********************************");
console.log("One before: "+req.session.flag);
req.session.flag = 1;
console.log("One after: "+req.session.flag);
next();
},
function (req, res, next) {
console.log("Two before: "+req.session.flag);
req.session.flag = 2;
console.log("Two after: "+req.session.flag);
var html="<!DOCTYPE html><html><head><title>Hello world</title></head><body ><h1>Hello world</h1></body></html>";
res.send(html);
});
app.get('/three', function (req, res, next) {
console.log("********************************");
console.log("Three before: "+req.session.flag);
req.session.flag = 3;
console.log("Three after: "+req.session.flag);
});
app.listen(port);
会话没有保存在您的/three
端点中。这是因为您没有返回任何响应(甚至没有空响应)。
摘自express-session
文档:
Session.save ()
将会话保存回存储中,替换将内容存储在内存中(尽管存储可以做一些事情)否则——参考商店的文档以获得确切的行为)。
此方法将在HTTP响应结束时自动调用会话数据已被更改(尽管可以更改此行为)在中间件构造函数中使用各种选项)。正因为如此,通常不需要调用此方法。
在某些情况下,调用这个方法是有用的例如,WebSockets中的长寿命请求。
由于不调用res.send
(或简单地调用res.end
),请求最终将超时,并且会话不会被保存。
由于JavaScript回调函数的异步特性,express不能只发送默认响应。您必须始终手动发送一个。
- 谷歌地球Api改变图像对比度
- 网页动画 API - 改变动画持续时间
- 逐渐改变网络音频API Panner
- (谷歌嵌入API)如何改变图表格式的宽度
- 如何在Google Maps v3 API中改变KmlLayer的颜色
- 丢失JSON数据时,改变JQuery从append()到html(),为什么以及如何我停止这个(Songkick API
- 如何改变光标样式时,鼠标悬停在谷歌图表API与Javascript
- setCenter()在谷歌地图API改变中心在地图上点击按钮后
- Google maps api-3:改变多边形的默认光标
- 在Googlemaps API Geocoder中改变JS状态变量不工作
- 改变颜色的一个国家在谷歌地图api
- 改变地图API商店定位器库中搜索表单的位置
- Express-session变量在加载api后改变
- 改变默认谷歌地图Api'的默认缩放控制图像
- Here.com (Nokia Api for Maps):如何在点击时改变颜色来管理圆圈
- 改变宽度的InfoWindow在谷歌地图php api
- 谷歌地图API改变
- 谷歌api——防止标记在缩放时改变大小
- 重新进入谷歌地图后,地图画布改变大小的API
- Iframe YouTube API动态改变视频源