我设置了值并尝试从新路径访问它们,我得到 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时使用会话 .