小编zxc*_*cvb的帖子

仅当路由稍后匹配时才表示中间件

我想拥有受保护和不受保护的路由,并使其成为未定义路由的请求将返回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', function(req, res) {
  res.send('protected route');
});

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

app.use('/', router);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,没有令牌的随机路由请求(例如/ whatever)将返回“ auth failed”而不是404。如何在Express中解决此问题?

node.js express

5
推荐指数
1
解决办法
987
查看次数

标签 统计

express ×1

node.js ×1