nodejs实现黑名单中间件设计

2020-06-17 06:07:50易采站长站整理

            }else{
                callback(null, true);
            }
        }else{
            callback(null, false);
        }
    })
}


/**
 * 通过Ip获取黑名单条目
 * @param ip
 * @param callback
 */
var getBlackListByIp = function(ip, callback){
    BlackList.findOne({ip:ip}, callback);
}


/**
 * 根据Ip删除黑名单
 * @param ip
 * @param callback
 */
var removeBlackListByIp = function(ip, callback){
    getBlackListByIp(ip, function(err, blackList){
        if(err){
            callback(err);
        }else if(blackList){
            blackList.remove(callback);
        }else{
            callback(null,null);
        }
    })
}


exports.newAndSave = newAndSave;
exports.isInBlackList = isInBlackList;
exports.getBlackListByIp = getBlackListByIp;
exports.removeBlackListByIp = removeBlackListByIp;
exports.newAndSaveOneHourTempForbidden = newAndSaveOneHourTempForbidden;
exports.newAndSaveOneDayTempForbidden = newAndSaveOneDayTempForbidden;
exports.newAndSaveForeverForbidden = newAndSaveForeverForbidden;
exports.newAndSaveTempForbidden = newAndSaveTempForbidden;


中间件详情:



/**
 * Created by YCXJ-wanglihui on 2014/5/28.
 */
‘use strict’;


var BlackListProxy = require(‘../../proxy’).BlackListPorxy;
var IpAnswerLogProxy = require(‘../../proxy’).IpAnswerLogProxy;
var EventProxy = require(‘eventproxy’);


/**
 * 判断是否需要将Ip移动至黑名单中
 * @param req
 * @param res
 * @param next
 */
var isNeedMoveToBlackList = function(req, res, next){
    var ip = req.ip;
    //判断是否在黑名单中
    requireNotInBlackList(req, res, function(){
        var ep = new EventProxy();
        ep.fail(next);


        ep.all(‘minuteCount’, ‘hourCount’, ‘dayCount’, function(minuteCount, hourCount, dayCount){
            if(minuteCount > 10){