2017-10-07 64 views
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; 
+0

您能否包含您用于创建/注册“express-session”中间件和相关路由的代码,即对“app.use”或“app.get”的调用或您正在使用的任何内容? – skirtle

+0

您似乎只使用登录路由器中的“express-session”中间件,因此不通过该路由器的请求将不会有会话。通常情况下,您会向上注册中间件,以便它在所有需要会话的请求链中。 – skirtle

+0

另一种方法是将相关代码放在一个单独的文件中,并将其“需要”放到每个需要它的路径中。 – skirtle

回答

1

我能够通过使用Express会话中间件与我的应用程序,然后访问解决我的问题它来自路线。

内app.js

app.use(session({ 
    resave: true, 
    saveUninitialized: true, 
    secret: "secret", 
    store: store 
})); 

现在我可以节省变量的request.session,它会通过两个途径文件存在。