如何从单独的路由文件访问会话变量

问题描述 投票:0回答:3

我目前正在使用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;
node.js express express-session
3个回答
1
投票

我能够通过在我的应用程序中使用快速会话中间件,然后从路由访问它来解决我的问题。

app.js 内部

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

现在我可以将变量保存到 request.session,它将在两个路由文件中持续存在。


0
投票

在入口点使用

express-session
,例如
app.js
,其中 你的应用程序实际上已初始化

在访问

app.js
中的路线之前,输入以下代码

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

记得维持秩序。


0
投票

这似乎对我有用。在一个分段环境中,有多个文件。

// 中间件 路由器.use(会话({ 秘密:“你的秘密密钥”, 重新保存:假, 保存未初始化:true }));

© www.soinside.com 2019 - 2024. All rights reserved.