如何访问保存会话数据
How to access save session data
我正在使用 Restify 模块创建 REST 服务器并使用 Restify-session 模块保存用户凭据。但是,我似乎无法检索保存的会话数据。我的请求对象没有我之前保存的会话数据。我试过 'load' 会话对象的方法和回调函数的数据参数,它只包含 SID。而且好像Restify网上资源不多。我在网上找不到太多。如果有人能指出我正确的方向,我将不胜感激。这是我的尝试
restify = require('restify'),
session = require('restify-session')({
debug : false,
ttl : 60 // Time to live in seconds
});
server = restify.createServer();
server.use(session.sessionManager);
server.listen(8001);
server.post('/session', start);
server.post('/homepage', loadHomePage);
function start(req, res, next) {
var data = {user: req.query.credential}; // Base-64 encoding of username and password
session.save(req.session.sid, data, function(err, status){
if(err) {
console.log("Session data cannot be saved");
return;
}
console.log("status-" + status + data.user); //debug code
});
function loadHomePage(req, res, next) {
session.load(req.session.sid,function(err,data){
if(err) {
res.writeHead(440, 'Login Time Out', {'Content-Type': 'application/json'});
res.end("{'Status': 'Error', 'Message': 'Session expired or does not exist'}");
return;
}
for(var n in data) { // Checking what properties data has
console.log(n); // Shows only SID value
}
});
更新:
我发现发生了什么事。 Restify-Session 正在为每个请求生成新的会话 ID。这就是为什么我找不到保存的数据。但是我不确定如何解决这个问题。
我找到了罪魁祸首。问题是我没有设置 cookie,所以我基本上是为每个加载会话数据的请求使用新生成的 ID。 Restify-session 正在做它应该做的事情——为每个请求生成 sid。我的新手错误。
我正在使用 Restify 模块创建 REST 服务器并使用 Restify-session 模块保存用户凭据。但是,我似乎无法检索保存的会话数据。我的请求对象没有我之前保存的会话数据。我试过 'load' 会话对象的方法和回调函数的数据参数,它只包含 SID。而且好像Restify网上资源不多。我在网上找不到太多。如果有人能指出我正确的方向,我将不胜感激。这是我的尝试
restify = require('restify'),
session = require('restify-session')({
debug : false,
ttl : 60 // Time to live in seconds
});
server = restify.createServer();
server.use(session.sessionManager);
server.listen(8001);
server.post('/session', start);
server.post('/homepage', loadHomePage);
function start(req, res, next) {
var data = {user: req.query.credential}; // Base-64 encoding of username and password
session.save(req.session.sid, data, function(err, status){
if(err) {
console.log("Session data cannot be saved");
return;
}
console.log("status-" + status + data.user); //debug code
});
function loadHomePage(req, res, next) {
session.load(req.session.sid,function(err,data){
if(err) {
res.writeHead(440, 'Login Time Out', {'Content-Type': 'application/json'});
res.end("{'Status': 'Error', 'Message': 'Session expired or does not exist'}");
return;
}
for(var n in data) { // Checking what properties data has
console.log(n); // Shows only SID value
}
});
更新: 我发现发生了什么事。 Restify-Session 正在为每个请求生成新的会话 ID。这就是为什么我找不到保存的数据。但是我不确定如何解决这个问题。
我找到了罪魁祸首。问题是我没有设置 cookie,所以我基本上是为每个加载会话数据的请求使用新生成的 ID。 Restify-session 正在做它应该做的事情——为每个请求生成 sid。我的新手错误。