0

我在用着

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});

它不起作用,因为中间件中的身份验证代码甚至在调用操作之前就触发了。我应该怎么做才能在中间件触发之前向 node.js 服务器发送一个 cookie(或任何字符串)?如果那不可能,有没有其他方法可以让我让 node.js 服务器获取用户的用户 ID?

谢谢你。

4

1 回答 1

2

要拦截请求,在您'.middleware/im'获取它之前,您需要创建自己的中间件,这非常简单(以下内容在您调用之前进行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它出现在代码中之前做到这一点。

于 2013-10-02T16:10:08.277 回答