...
|
...
|
@@ -26,16 +26,10 @@ module.exports = (limiter, policy) => { |
|
|
});
|
|
|
|
|
|
return cache.getMultiAsync(_.values(ruleKeys)).then((results) => {
|
|
|
logger.debug(results);
|
|
|
|
|
|
// 第一次访问
|
|
|
if (_.isEmpty(results)) {
|
|
|
_.forEach(MAX_TIMES, (val, key) => {
|
|
|
cache.setAsync(ruleKeys[key], 1, +key); // eslint-disable-line
|
|
|
});
|
|
|
|
|
|
return Promise.resolve(true);
|
|
|
}
|
|
|
logger.debug(MAX_TIMES);
|
|
|
logger.debug(_.values(ruleKeys));
|
|
|
logger.debug(results);
|
|
|
|
|
|
// 遍历限制规则,若满足返回相应处理策略, 否则页面访问次数加1
|
|
|
_.forEach(MAX_TIMES, (val, key) => {
|
...
|
...
|
@@ -48,9 +42,9 @@ module.exports = (limiter, policy) => { |
|
|
// ip限制1小时
|
|
|
cache.setAsync(`${config.app}:limiter:${limiter.remoteIp}`, 1, limiterIpTime);
|
|
|
return Promise.resolve(policy);
|
|
|
} else {
|
|
|
cache.incrAsync(cacheKey, 1);
|
|
|
}
|
|
|
|
|
|
cache.incrAsync(cacheKey, 1);
|
|
|
});
|
|
|
|
|
|
// 不满足任何限制规则,继续访问
|
...
|
...
|
|