客户端将值发送到node.js并设置为cookie

时间:2013-10-02 15:53:55

标签: javascript node.js cookies express middleware

我正在使用

app.use(require('./middleware/im')({
   maxAge: 30 * 1000,
   reapInterval: 20 * 1000,
   authentication: require('./libs/authentication/' + AUTH_LIBRARY)
}));

在我的node.js / express.js中验证用户(基于cookie)。现在我的问题是我需要我的客户端(PHP + javascript)服务器通过GET(jsonp)向节点服务器发送cookie值,以便我可以验证用户。但如果我这样做:

app.get('/cookie', function(){//set cookie here});

它不起作用,因为中间件中的auth代码甚至在调用操作之前触发。我应该怎么做才能在中间件启动之前将cookie(或任何字符串)发送到node.js服务器?如果那是不可能的,有没有其他方法可以使用,所以我可以让node.js服务器获取用户的用户ID?

谢谢。

1 个答案:

答案 0 :(得分:2)

要拦截请求,在'.middleware/im'可以访问之前,您需要创建自己的middlware,这非常简单(以下是在您致电app.use(require('./middleware/im')({ ...之前):

app.use(cookieDetect);
function cookieDetect (request, response, next) {
    if (request.url === "/cookie") {
        // do your stuff here
    } else {
        next(); // keep the middleware chain going
    }
}

顺便说一句,作为一个JavaScript语法注释,当你使用函数声明(不同于var myFunc = function () { ...)时,“范围提升”发生:该特定函数声明在该范围级别执行的最开始时可用,它出现在代码中的位置。这就是为什么我能够在之前app.use 它出现在代码中的原因。