我希望快递中的GET方法可以跳过令牌验证。我希望允许每个人都获得GET请求,而只需要授权用户发布,放置,删除请求。这是我的逻辑,但响应挂起。我试着用嵌套的快速使用方法。
app.use(function(req, res, next) {
if (req.method === 'GET') {
app.use('/api/someroute', routes);
}
else{
//do verification below the next
next();
}
})
还是有其他办法来处理这个
答案 0 :(得分:0)
只需在所需路线中加入中间件:
var router = express.Router();
// no middleware included for get request
router.get("/route1", handlerRoute1);
router.get("/route2", handlerRoute2);
// include some middleware
router.post("/route3", myMiddleware1, myMiddleware2, handlerRoute3);
app.use(router);
myMiddleware1和myMiddleware2的样子:
myMiddleware1 = function(req, res, next){
// verify token, etc, ....
var success = true;
// call next on success
if(success)
return next();
else
{
// raise error
return res.status(500).json({error: "Missing token..."});
}
};
答案 1 :(得分:0)
这是因为在GET请求的场景中,您实际上并未完成请求(或从该中间件转移)。中间件按顺序处理,即先到先服务。如果您只想保护除GET请求之外的所有内容,那么这样的事情就可以了:
app.use(function(req, res, next) {
// let GET requests through
if (req.method === 'GET') return next();
// perform token auth on all other requests, next() if OK
});
// setup routes
app.use('/api/someroute', routes);
您先设置中间件,然后再申报路由,这意味着任何进入的请求都必须通过您的令牌检查,在这种情况下,您只需跳过GET请求。