【发布时间】:2019-04-12 22:11:33
【问题描述】:
我正在使用 NodeJS + express + express-session 从应用程序的任何位置保存用户 ID。
在第一条路线上,我的会话已定义
userProfileRoutes.route('/authentication').post((req, res) => {
req.session.userID = 10; //example
console.log(req.session)
}
console.log 的结果是:
Session {
cookie:
{ path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true,
secure: true },
userID: 10 } // this is the right value
但是,从不同的路线,我看不到价值:
userProfileRoutes.route('/edit').get(function (req, res) {
console.log('After the nav edit route');
console.log(req.session);
}
这会打印出来
Session {
cookie:
{ path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true,
secure: true }
} // ID VARIABLE DISAPEARS HERE
我正在使用这些参数配置express-session:
app.use(session({
secret: 'secret',
proxy: true,
resave: false,
saveUninitialized: true,
withCredentials: true,
cookie: { secure: true },
store: new MongoStore({ mongooseConnection: db })
}));
为什么我的用户 ID 在请求之间和所有路由上都没有保留?
【问题讨论】:
-
你在
app.use中尝试过cookie: { secure: true, maxAge: 600000 },我猜会话会立即过期,因为没有提到maxAge。 -
确实我试过了,问题不在于会话本身,而在于它包含的变量 userID。我试图 console.log(req.sessionID) 这是对象会话的定义值,它会在任何地方弹出。会话无处不在,但问题是其中的变量 userID 不是...
标签: node.js express session-cookies express-session