我目前正在使用express和express-session来保存信息。如果我将这样的会话变量保存在文件“
routes/login.js
”中
req.session.user = "User1"
然后我如何从“
routes/index.js
”访问相同的变量,因为目前如果我这样做
console.log(req.session.user)
它将记录未定义的信息,但如果我从“
routes/login.js
”内部执行相同的操作,它将记录“User1”
编辑:
在“
routes/login.js
”文件内将记录“User1”
var express = require('express');
var redis = require('redis');
var session = require('express-session');
var RedisStore = require('connect-redis')(session);
var router = express.Router();
var client = redis.createClient();
var store = new RedisStore({host: 'localhost', port: 6379, client: client, ttl: 260});
router.use(session({
resave: true,
saveUninitialized: true,
secret: "secret",
store: store
}));
router.get('/user', function(req, res) {
req.session.test = "User1";
res.send(req.session.test); //Logs "User1"
});
module.exports = router;
“
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;
我能够通过在我的应用程序中使用快速会话中间件,然后从路由访问它来解决我的问题。
app.js 内部
app.use(session({
resave: true,
saveUninitialized: true,
secret: "secret",
store: store
}));
现在我可以将变量保存到 request.session,它将在两个路由文件中持续存在。
在入口点使用
,例如express-session
,其中 你的应用程序实际上已初始化app.js
在访问
app.js
中的路线之前,输入以下代码
app.use(session({
resave: true,
saveUninitialized: true,
secret: "secret",
store: store
}));
记得维持秩序。
这似乎对我有用。在一个分段环境中,有多个文件。
// 中间件 路由器.use(会话({ 秘密:“你的秘密密钥”, 重新保存:假, 保存未初始化:true }));