Authored by 郝肖肖

'limiter-key'

... ... @@ -65,11 +65,6 @@ app.use((req, res, next) => {
// 添加请求上下文
app.use(global.yoho.httpCtx());
// 请求限制中间件
if (!app.locals.devEnv) {
app.use(require('./doraemon/middleware/limiter'));
}
// 指定libray目录
global.utils = path.resolve('./utils');
... ... @@ -162,6 +157,11 @@ try {
app.use(seo());
app.use(setPageInfo());
// 请求限制中间件
if (!app.locals.devEnv) {
app.use(require('./doraemon/middleware/limiter'));
}
if (app.locals.devEnv) {
app.use(devtools());
}
... ...
... ... @@ -18,7 +18,8 @@ const IP_WHITE_LIST = [
'106.39.86.227',
'218.94.75.58',
'218.94.75.50',
'218.94.77.166'
'218.94.77.166',
'222.73.196.18' // B站合作方单击次数快加白名单
];
const PATH_WHITE_LIST = [
... ...
... ... @@ -2,16 +2,16 @@
const cache = global.yoho.cache.master;
const _ = require('lodash');
const config = global.yoho.config;
const logger = global.yoho.logger;
module.exports = (limiter, policy) => {
const key = `${config.app}:limiter:${limiter.remoteIp}`;
// 和pc共用
const key = `pc:limiter:${limiter.remoteIp}`;
return cache.getAsync(key).then((result) => {
logger.debug(key, result);
if (result && _.isNumber(result)) {
if (result && _.isNumber(result) && result !== -1) {
return Promise.resolve(policy);
} else {
return Promise.resolve(true);
... ...
... ... @@ -44,7 +44,7 @@ module.exports = (limiter, policy) => {
} else if (+results[key] > +val) {
// ip限制1小时
operation.push(cache.setAsync(`${config.app}:limiter:${limiter.remoteIp}`, 1, limiterIpTime));
operation.push(cache.setAsync(`pc:limiter:${limiter.remoteIp}`, 1, limiterIpTime));
return Promise.resolve(policy);
} else {
operation.push(cache.incrAsync(cacheKey, 1));
... ...
... ... @@ -6,8 +6,8 @@ const logger = global.yoho.logger;
module.exports = (limiter, policy) => {
const blackKey = 'wap:limiter:ua:black',
whiteKey = 'wap:limiter:ua:white';
const blackKey = 'pc:limiter:ua:black',
whiteKey = 'pc:limiter:ua:white';
const ua = limiter.req.header('User-Agent');
... ...