【问题标题】:How to access save session data如何访问保存会话数据
【发布时间】:2015-08-16 13:15:36
【问题描述】:

我正在使用 Restify 模块来创建 REST 服务器并使用 Restify-session 模块来保存用户凭据。但是,我似乎无法检索保存会话数据。我的请求对象没有我之前保存的会话数据。我尝试了会话对象的“加载”方法和回调函数的数据参数,它只包含 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。这就是为什么我找不到保存的数据。但我不确定如何解决这个问题。

【问题讨论】:

    标签: node.js session restify


    【解决方案1】:

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

    【讨论】:

    • 嗨,有机会获得更新的代码示例吗?如何设置 cookie 并避免 restify-session 为每个请求创建新的 sid 谢谢
    • 查看源代码 (github.com/mgesmundo/restify-session/blob/master/lib/…),您只需在请求中传入一个标头“session-id”(假设您使用的是默认设置),其值为从中检索到的值原来的电话。
    猜你喜欢
    • 2012-08-17
    • 1970-01-01
    • 2014-03-26
    • 1970-01-01
    • 2018-10-03
    • 2011-03-27
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多