Node.js 如何从单独的路由文件访问会话变量
我目前正在使用express和express会话保存信息。如果我在文件“Node.js 如何从单独的路由文件访问会话变量,node.js,express,express-session,Node.js,Express,Express Session,我目前正在使用express和express会话保存信息。如果我在文件“routes/login.js”中保存这样的会话变量 req.session.user = "User1" 然后如何从“routes/index.js”访问同一个变量,因为如果我 console.log(req.session.user) 它将记录未定义的日志,但如果我从“routes/login.js”内部执行相同的操作,它将记录“User1” 编辑: 在“routes/login.js”文件中,将记录“User1”
routes/login.js
”中保存这样的会话变量
req.session.user = "User1"
然后如何从“routes/index.js
”访问同一个变量,因为如果我
console.log(req.session.user)
它将记录未定义的日志,但如果我从“routes/login.js
”内部执行相同的操作,它将记录“User1”
编辑:
在“routes/login.js”文件中,将记录“User1”
“routes/index.js
”文件中的日志未定义
var express = require('express');
var router = express.Router();
var config = require('../config/config')
/* GET home page. */
router.get('/', function(req, res, next) {
console.log(req.session); //Logs undefined
});
module.exports = router;
我可以通过在我的应用程序中使用express session中间件,然后通过routes访问它来解决我的问题
内部app.js
app.use(session({
resave: true,
saveUninitialized: true,
secret: "secret",
store: store
}));
现在我可以将一个变量保存到request.session,它将在两个路由文件中保持不变
在您的入口点中使用
,如app.js
where
你的应用程序实际上已初始化
在访问app.js中的路由之前,请输入以下代码
app.use(session({
resave: true,
saveUninitialized: true,
secret: "secret",
store: store
}));
记住维护订单。您是否可以包括用于创建/注册express session
中间件和相关路由的代码,例如,调用app.use
或app.get
或您正在使用的任何东西?您似乎只在登录路由器中使用express session
中间件,因此未通过该路由器的请求将不会有会话。通常,您会注册更高级别的中间件,因此,它位于所有需要会话的请求链中。将其“向上”移动的另一种选择可能是将相关代码放在单独的文件中,并将其require
放入每个需要它的路由中。在这种情况下,当您说相关代码时,这是否意味着会话中间件和redis store?如果我将中间件与应用程序而不是路由器是否可以访问所有路由器?
app.use(session({
resave: true,
saveUninitialized: true,
secret: "secret",
store: store
}));