首页 > 解决方案 > 仅在某些情况下触发中间件主体

问题描述

我对 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每次射击,而不仅仅是在暴力攻击时?

标签: node.jsexpress

解决方案


我想你只是忽略了代码,你定义的函数是阻塞的,中间件是阻塞的。您可以在包含执行计数的源代码中看到,它仅在达到限制时调用。blockblocked


推荐阅读