Node.js NodeJS+;Express:如何在其他方法中使用会话变量。(会话变量:未定义)

Node.js NodeJS+;Express:如何在其他方法中使用会话变量。(会话变量:未定义),node.js,session,express,session-variables,Node.js,Session,Express,Session Variables,我正在使用NodeJS 0.10.18和Express 3.4.0作为Web服务器来处理PhoneGap应用程序 我想使用会话变量/会话来存储用户用户名,以便在其他方法中使用它 当我使用login方法登录时,用户名存储在req.session.name中(设置为,因为我可以将其打印到控制台)。但后来,当我想在reserve方法中使用它时,req.session.name变量突然未定义 你能告诉我我做错了什么吗 这是我的密码: //NodeJS Modules var http = require

我正在使用NodeJS 0.10.18和Express 3.4.0作为Web服务器来处理PhoneGap应用程序

我想使用会话变量/会话来存储用户用户名,以便在其他方法中使用它

当我使用login方法登录时,用户名存储在req.session.name中(设置为,因为我可以将其打印到控制台)。但后来,当我想在reserve方法中使用它时,req.session.name变量突然未定义

你能告诉我我做错了什么吗

这是我的密码:

//NodeJS Modules
var http = require('http');
var express = require("express");

//Variables
var app = express();
var listenport = '8123';
var Username = "";
var Password = "";


//Application configuration
app.configure(function(){
    app.use(express.cookieParser('S3CRE7'));
    app.use(express.cookieSession());
    app.use(app.router);
});


//Create header for every HTTP response
app.all("*", function(req, res, next) {
    res.writeHead(200, {'Content-Type': 'text/plain', 'Access-Control-Allow-Origin': '*'});
    next();
});

//Login
app.post("/MobileApplication/login", function(req, res) {
    //Response 0 = correct

    var loginUsername = req.param('Username');

    //VALIDATE 

    //STORE IN SESSION
    req.session.name = loginUsername;
    console.log(req.session.name);

    res.end("0");
});


//Reservation
app.post("/MobileApplication/reserve", function(req, res) {
    var name = req.session.name;
    console.log(name);
    res.end("0");
});

//If the url isn't valid respond with 404
app.all("*", function(request, response) {
    response.end("404!");
});

//Listen on listenport
http.createServer(app).listen(listenport);
Phonegap ajax登录请求:

jQuery.ajax({
            url: "http://" + serverip + ":" + serverpoort + "/MobileApplication/login?Username=" + Username + "&Password=" + Password + "",
            type: "POST",
            beforeSend: function(data) {
                console.log("login - sending");
            },
            success: function(data) {
                console.log("login - succes!");

                if (data === "0") {
                    $('input[type="checkbox"]').filter('#checkbox-1').each(function() {
                        if ($(this).is(':checked')) {
                            // perform operation for checked
                            window.localStorage.setItem("Username", Username);
                            window.localStorage.setItem("Password", Password);
                            $.mobile.navigate("#customers", {transition: "slide"});
                        }
                        else {
                            // perform operation for unchecked
                            window.localStorage.setItem("Username", "");
                            window.localStorage.setItem("Password", "");
                            $.mobile.navigate("#customers", {transition: "slide"});
                        }
                    });
                }
                if (data === "1") {
                    navigator.notification.alert(
                            'The username you have entered does not exist.', // message
                            doNothing,
                            'Error', // title
                            'Ok'                  // buttonName
                            );
                }
                if (data === "2") {
                    navigator.notification.alert(
                            'You have entered a wrong password.', // message
                            doNothing,
                            'Error', // title
                            'Ok'                  // buttonName
                            );
                }

            },
            error: function(a, b, c) {
                alert("login - error: " + a.toString() + " " + b.toString() + " " + c.toString());
                navigator.notification.alert(
                        "login - error: " + a.toString() + " " + b.toString() + " " + c.toString(), // message
                        doNothing,
                        'Error', // title
                        'Ok'                  // buttonName
                        );
            }
        });

您是否可以添加客户端(Phonegap)代码来调用服务器,我猜该请求不会将会话cookie发送到服务器。您可以记录
req.cookies
的内容,并检查您是否获得
connect
cookie id。@IvanFraixedes我添加了ajax请求,我认为该请求不会发送cookie,因此phonegap是本地应用程序,而不是web应用程序(它不会从服务器加载网页)因此,当服务器将cookie发送到phonegap时,它会忽略cookie,因此当下一个请求不发送cookie时,它会忽略cookie。基本上,因为cookie只是为了请求而发送到同一个域,所以phonegap不发送cookie是有意义的,因此它是一个自包含的应用程序。但是,我没有在我的开发机器中复制您的代码,我检查了我的应用程序ghts@vmx我已经记录了req.cookies的内容,它是空的,当我尝试记录连接ID(req.sessionID)时,它说未定义。