2017-10-07 66 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,它會通過兩個途徑文件存在。