我正在使用
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?
谢谢。
答案 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
它出现在代码中的原因。