Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 仅当路由稍后匹配时才显示中间件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我希望有受保护和不受保护的路由,并使其即使在用户未经身份验证的情况下,对未定义路由的请求也将返回404.我遇到的问题是身份验证中间件在除了之前定义的路由之外的所有路由上运行,因此任何未定义的路由都会返回身份验证失败而不是404.以下是问题的示例:

var app = express();
var router = express.Router();

router.get('/',function(req,res) {
  res.send('unprotected route');
});

// best auth ever
router.use(function(req,res,next) {
  if(req.body.token) {
    return next();
  }

  res.send('auth Failed');
});

router.get('/protected',res) {
  res.send('protected route');
});

/// catch 404
router.use(function(req,res) {
  res.sendStatus(404);
});

app.use('/',router);

在这种情况下,没有令牌到随机路由的请求(例如/无论如何)将返回’auth Failed’而不是404.如何在Express中解决此问题?

解决方法

一种解决方案是在路由处理程序之前将身份验证中间件移动到路由中:

// best auth ever
function checkAuth(req,next) {
  if(req.body.token) {
    return next();
  }

  res.send('auth Failed');
}

router.get('/protected',checkAuth,res) {
  res.send('protected route');
});

您甚至可以通过在单独的路由器中定义所有路由,然后执行router.use(‘/ api’,apiRouter)之类的操作来对一组路由执行此操作.

此外,认情况下,如果没有路由匹配,Express将以404响应,因此您无需显式发送它.

大佬总结

以上是大佬教程为你收集整理的node.js – 仅当路由稍后匹配时才显示中间件全部内容,希望文章能够帮你解决node.js – 仅当路由稍后匹配时才显示中间件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。