Node.js 速率限制器灵活+;计划每个用户的使用率
我玩这个软件包,但我不能做我想做的事 我解释说,我希望每个用户都有一个Node.js 速率限制器灵活+;计划每个用户的使用率,node.js,Node.js,我玩这个软件包,但我不能做我想做的事 我解释说,我希望每个用户都有一个计数器,当该计数器到达时,如果用户支付新软件包api调用,则用户被阻止,并且用户可以重置该计数器 此时,当用户到达最大点时,我可以阻止他: const opts = { storeClient: redisClient, points: 10, // 100 points //duration: 15*60, // Per 15 minutes duration: 0, }; const rateLimite
计数器
,当该计数器到达时,如果用户支付新软件包api
调用,则用户被阻止,并且用户
可以重置该计数器
此时,当用户到达最大点时,我可以阻止他:
const opts = {
storeClient: redisClient,
points: 10, // 100 points
//duration: 15*60, // Per 15 minutes
duration: 0,
};
const rateLimiterRedis = new RateLimiterRedis(opts);
const rateLimiterMiddleware = (req, res, next) => {
const isIpLimited = req.ip;
if (isIpLimited) {
// Consume 1 point for each request
rateLimiterRedis.consume(req.ip, 1)
.then((rateLimiterRes) => {
console.log(rateLimiterRes)
// There was enough remaining points
})
.catch((rejRes) => {
// All points consumed
const secs = Math.round(rejRes.msBeforeNext / 1000) || 1;
res.set('Retry-After', String(secs));
res.status(429).send('Too Many Requests');
});
} else {
next();
}
};
app.use(rateLimiterMiddleware);
也许我可以尝试使用。设置方法。。。有什么想法吗
非常感谢我知道两种选择:
创建一个100000000点的限速器。消费取决于使用计划:freemium每次请求消耗10000000点,silver plan每次请求消耗1000000点,gold plan每次请求消耗1000点,等等。购买新计划时,删除以前通过IP消耗的点
为每个计分不同的计划创建单独的费率限制。根据用户的计划,从适当的限速器消费