我设置了值并尝试从新路径访问它们,我得到 undefined !所以基本上我有一个l ogin (POST) 并且在那个请求中我设置了会话数据,然后我有一个 show user details (POST) ,我尝试访问我刚刚存储的会话数据 .

设置

// Setup express and needed modules #############################################
    var express = require('express'),
        session = require('express-session'),
        cookieParser = require('cookie-parser'),
        redis = require("redis"),
        redisStore = require('connect-redis')(session),
        bodyParser = require('body-parser');

var client = redis.createClient(), //CREATE REDIS CLIENT
    app = express();

// Setup app
app.use(cookieParser('yoursecretcode'));
app.use(session(
    {
        secret: 'x', 
        store: new redisStore({
            port: 6379, 
            client: client 
        }),
        saveUninitialized: true, // don't create session until something stored,
        resave: false // don't save session if unmodified
    }
));
app.use(bodyParser.urlencoded({ extended: true}));
app.use(bodyParser.json());
app.set('trust proxy', 1) // trust first proxy

所以当你使用快速会话和Redis时've seen my setup, you know I' . 以下是我设置会话值的地方!如果我在这里打印出会话值它可以工作,但是如果我尝试在另一个路由中访问会话数据,它将返回undefined .

路线

我发送一个http post请求并设置会话数据:

router.route('/login/').post(function(req, res) {
        req.session.userId = req.body.uId;
        req.session.name = req.body.uName;
        // THIS PRINTS OUT IF I TRY AND ACCESS THE SESSION DATA HERE
        console.log("THIS PRINTS OUT --> " + req.session.name);
 });

所以现在已经设置了会话值,我可以正确访问它们,不,我每次尝试登录时都会得到未定义 .

router.route('/user/printoutuserdetails').post(function(req, res) {
        // THESE RETURN UNDEFINED
        console.log(req.session.userId);
        console.log(req.session.uName);
        console.log("THIS PRINTS OUT --> " + req.session.name);
 });

有谁知道发生了什么?我已经尝试了所有的东西,到处寻找,似乎无法找到一种方法让它工作!

已解决:

这不是因为你不想在使用RESTFUL api时使用会话 .