Mih*_*tel 5 javascript api rate-limiting node.js
我正在尝试使用express-rate-limit在我的应用上设置API速率限制.如果来自相同的IP地址,它可以工作.一旦达到最大值5,我会收到一条错误消息.但是,当从不同的IP地址/计算机尝试它时,它会失败.知道如何解决这个问题吗?我尝试使用127.0.0.1生成密钥,无论哪个IP地址,但也失败了.
以下是我的代码:
// Rate Limit
var RateLimit = require('express-rate-limit');
app.enable('trust proxy');
var limiter = new RateLimit({
windowMs: 365*24*60*60*1000, // 1 year
max: 5, // limit each IP to 1 requests per windowMs
delayMs: 365*24*60*60*1000, // delaying - 365 days until the max limit is reached
message: "Sorry, the maximum limit of 50 letters sent has been reached. Thank you for participating!",
keyGenerator: function (req) {
req.ip = "127.0.0.1";
// req.ip = "ip address";
return req.ip;
}
});
app.use('/api/letter', limiter);
Run Code Online (Sandbox Code Playgroud)
所使用的内存存储实现express-rate-limit用途setTimeout()明确后店里windowMs毫秒。
根据 Node.js文档setTimeout(),
当延迟大于 2147483647 或小于 1 时,延迟将设置为 1。
在您的情况下,延迟大于该数量,即31536000000毫秒。这导致存储永远不会存储任何数据超过 1 毫秒。
要解决这个问题,您可能必须实现自己的商店(请参阅store选项),或者寻找没有此限制的替代速率限制器(在我看来,由于到期时间如此之长,您需要一些无论如何都是持久存储)。
| 归档时间: |
|
| 查看次数: |
6930 次 |
| 最近记录: |