node.js - 仅在某些情况下触发中间件主体
问题描述
我对 express 中间件的理解一直是当我们将它放入 express 路由器时它每次都会触发。我正在查看 express-bouncer npm 包的文档,我看到了这个:
bouncer.blocked = function (req, res, next, remaining)
{
res.send (429, "Too many requests have been made, " +
"please wait " + remaining / 1000 + " seconds");
};
// Route we wish to protect with bouncer middleware
app.post ("/login", bouncer.block, function (req, res)
{
if (LoginFailed)
{
// Login failed
}
else
{
bouncer.reset (req);
// Login succeeded
}
});
是什么阻止了res.send
每次射击,而不仅仅是在暴力攻击时?
解决方案
我想你只是忽略了代码,你定义的函数是阻塞的,中间件是阻塞的。您可以在包含执行计数的源代码中看到,它仅在达到限制时调用。block
blocked
推荐阅读
- swift - 如何添加“添加按钮”- 按钮
- arduino - 我无法重新运行循环
- c# - 为什么 ASP.NET API 返回 200 OK 但 Angular 应用程序仅在基于 Chromium 的浏览器上收到 500 错误?
- python - 如何修复因内存不足而被操作系统中断的代码并优化代码?
- c++ - 链接 operator<< 和 operator++ 的问题
- excel - 使用 xlsxwriter(或其他包)创建具有特定命名的 Excel 选项卡,并将数据框写入相应的选项卡
- ruby-on-rails-5 - Ruby on Rails 5.2 升级 | ArgumentError(一个类被传递给 `:class_name` 但我们期待一个字符串。)
- eigen - 矩阵乘法的 Eigen 中出现意外且较大的运行时变化
- c# - 如何从停止的位置继续对列表进行编号?
- sql-server - 了解气隙网络中的 CREATE CONTRACT