Express和redis会话保持返回undefined

时间:2015-11-21 03:38:24

标签: node.js session express node-redis

我在尝试访问存储的会话值时遇到了问题!一旦我设置了值并尝试从新路径访问它们,我就得到undefined!所以基本上我有一个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 。以下是我设置会话值的地方!如果我打印出会话值,它可以工作,但是如果我尝试访问另一个路由中的会话数据,它返回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时不想使用会话。

0 个答案:

没有答案