0
我目前使用快速和快速会话保存信息。如果我保存会话变量像这样的文件“routes/login.js
”如何从单独的路由文件访问会话变量
req.session.user = "User1"
我如何再访问从“routes/index.js
”同一个变量,因为目前如果我只是做
console.log(req.session.user)
它会记录不确定的,但如果我从内做同样的事情“routes/login.js
”,它会记录“用户1”
编辑:
内“routes/login.js
“文件将记录‘用户1’
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;
您能否包含您用于创建/注册“express-session”中间件和相关路由的代码,即对“app.use”或“app.get”的调用或您正在使用的任何内容? – skirtle
您似乎只使用登录路由器中的“express-session”中间件,因此不通过该路由器的请求将不会有会话。通常情况下,您会向上注册中间件,以便它在所有需要会话的请求链中。 – skirtle
另一种方法是将相关代码放在一个单独的文件中,并将其“需要”放到每个需要它的路径中。 – skirtle