2

谁能告诉我如何在 Node Js 中创建会话变量以及如何浏览它。实际上我正在使用 Node Js 和 Express

    exports.setSession=function(req,res){
req.session.user = 'demo';
//console.log("adding to session " + JSON.stringify(user));
console.log("SessionS-"+req.session.user);
    };


   exports.get_session = function(req, res){
console.log("SessionFun-"+req.session.user);
 };

我这样做了,但在 session var 中得到了未定义的值

 Output:         
     SessionS-demo
     SessionFun-undefined
4

1 回答 1

2

Express 基于连接中间件,因此您可以重用连接会话实现,而不是自己编写。您可以在下面找到示例代码。

var http = require('http')
  , express = require('express')
  , app = express();

app.use(express.cookieParser());
app.use(express.session({secret: '1234567890QWERTY'}));

app.get('/set',function(req, res){
    req.session.user = { name:'andbas' };
    res.send('Session set');
});

app.get('/get',function(req, res){
    res.send(req.session.user);
});

http.createServer(app).listen(3000, function(){
    console.log('Express server listening on port 3000');
});

此代码在您拨打电话时设置会话用户变量GET /set,并在您执行GET /get. 去尝试一下。

您在自己的代码中犯的错误是您只修改了 req 变量,该变量是http为每个请求创建的节点模块。它不是你可以保存数据的地方。取而代之的是,您需要使用 HTTP 标头来设置密钥,该密钥将用于识别用户并将其数据存储在服务器上(我大大简化了概念以使其更易于理解)。您可以查看连接会话中的代码以了解其工作原理。

于 2013-11-06T11:44:39.513 回答