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