Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何从单独的路由文件访问会话变量_Node.js_Express_Express Session - Fatal编程技术网

Node.js 如何从单独的路由文件访问会话变量

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”

我目前正在使用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/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
        }));