【发布时间】:2013-04-12 13:48:30
【问题描述】:
我正在尝试添加身份验证中间件,以防止访问网站的某些部分:
app = express()
.get('/api/test', function (req, res) { ... })
.use('/api', function (req, res, next) {
if (req.param('key')) {
next();
} else {
res.json(401, {
message : 'Authentication failed'
});
res.end();
}
})
.get('/api/data', function (req, res) { ... });
我期望 /api/data 的调用将首先由密钥检查器处理,然后(如果成功)由 /api/data 处理程序处理。而是由'/api/data'首先处理的请求。
检查器似乎适用于 /api/something_that_does_not_exist,但不适用于 /api/something_that_exist。
也许我错过了 express/connect 文档中的某些内容?
更新我已经跟踪到第一个 get/post 调用初始化路由器中间件,因此它首先被执行。
【问题讨论】:
-
它应该可以工作,并且在我测试它时也可以工作(使用 Express 3.1.1)。
-
谢谢。代码示例摘自实际代码,缺少重要片段,我在此特定 .use之前添加了一些路由
-
啊,哎呀,我刚刚注意到你已经发现它是路由器中间件,我也回答了 :) 如果你没问题,我会按原样留下答案,可能会有所帮助将来会有其他人。
-
我写过一篇关于Express应用中中间件顺序的重要性的文章。这里是文章的链接:nodexplained.com/blog-detail/2018/01/11/…
标签: node.js express connect.js