【问题标题】:how to break in middleware in expressjs如何在expressjs中闯入中间件
【发布时间】:2017-05-02 15:08:43
【问题描述】:

我有一个基于 MEAN 堆栈的 Web 应用程序,并且我有一个中间件来验证请求以用于某些授权目的。我已经编写了安全检查部分,但如果用户未经授权,则快速中间件应停止执行并返回用户 401 状态并返回消息。我怎样才能实现它?我试图在中间件中使用 return 语句,但它不起作用。尽管其中一些有效,但它会引发异常并破坏服务器。我只想突然结束请求。任何帮助将不胜感激。

【问题讨论】:

标签: node.js express mean-stack


【解决方案1】:

假设isValid 是一个用于检查请求有效性的假设函数。

function authMiddleware(req,res,next){
  if(isValid(req)){
   next(); // calls the next middleware
  }else {
   return res.sendStatus(401); // sends HTTP 401 back
  }
}

【讨论】:

  • 如果 res.status 后面还有更多行,如下所示;它会被执行吗?我的代码更大,超过 100 行;如果第 10 行给出无效,我不希望其他人被处决...把所有的东西都放在 else 中;如果 else 构造,给我很多 if else if else 构造
  • @Jocket 你可以在你设置 res.status(401).send("...") 的那一行返回
  • 它返回正确..但服务器失败并出现错误:发送后无法设置标头。在 ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:356:11)
  • 只有在调用 send 或类似方法(如 res.status(200).json("good! ") ) 等
  • 您可能有另一个已经设置了标头的中间件。尝试禁用所有其他中间件,看看它是否有效,然后将它们一一添加,直到找到罪魁祸首
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-27
  • 1970-01-01
  • 2016-06-21
  • 1970-01-01
相关资源
最近更新 更多