思路大概是这样的:

1.获取到发出请求的客户端的IP

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

2.将该IP存入Cache作为KEY,将次数作为Value初始化为0,过期时间设置为1分钟

3.每次请求都将value+1,超过指定的次数后返回false

代码是这样的:

/// <summary>
        /// 同一Ip地址重复频繁访问限制
        /// 同一IP地址,1分钟内不能请求5次以上
        /// </summary>
        /// <param name="ip">发出请求的IP地址</param>
        /// <returns></returns>
        private bool ValidIp()
        {
            var ip = IpToAddress.GetClientIP();
            if (MemCacheHelper.GetObject(ip) != null)
            {
                var cacheVal = (int)MemCacheHelper.GetObject(ip);
                if (cacheVal > 5)
                {
                    return false;
                }
                MemCacheHelper.SetObject(ip, (int)MemCacheHelper.GetObject(ip) + 1, 60);
            }
            MemCacheHelper.SetObject(ip, 0, 60);
            return true;
        }

  注:以上思路和代码是本人在开发功能的过程中临时想到的,因为怕忘记,所以记到博客上,具体是否可行,还未进行测试。

    如有错误,望大神指正!

 

 .net后台防止API接口被重复请求 随笔

 

更多技术问题,欢迎关注公众号【程序员在职场】进行获取

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄