我在尝试访问存储的会话值时遇到了问题!一旦我设置了值并尝试从新路径访问它们,我就得到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时不想使用会话。