Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何访问并保存会话数据_Node.js_Session_Restify - Fatal编程技术网

Node.js 如何访问并保存会话数据

Node.js 如何访问并保存会话数据,node.js,session,restify,Node.js,Session,Restify,我使用Restify模块创建REST服务器,并使用Restify会话模块保存用户凭据。但是,我似乎无法检索保存会话数据。我的请求对象没有我先前保存的会话数据。我尝试了会话对象的“load”方法和回调函数的数据参数,它只包含SID。而且Restify似乎没有太多在线资源。我在网上找不到太多。如果有人能给我指出正确的方向,我将不胜感激。这是我的尝试 restify = require('restify'), session = require('restify-session')({ deb

我使用Restify模块创建REST服务器,并使用Restify会话模块保存用户凭据。但是,我似乎无法检索保存会话数据。我的请求对象没有我先前保存的会话数据。我尝试了会话对象的“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会话正在为每个请求生成新的会话id。这就是为什么我找不到保存的数据。但是我不知道如何解决这个问题。

我找到了罪犯。问题是我没有设置cookies,所以我基本上是为每个请求使用新生成的ID来加载会话数据。Restify会话正在做它应该做的事情——为每个请求生成sid。我的新手犯了个错误

嗨,有没有机会获得更新的代码示例?如何设置cookie并避免重新设置会话以创建新的sid每次请求都在源()上搜索,您只需在请求中传入一个标题“会话id”(假设您使用的是默认设置),其值为从原始调用中检索到的值。