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

思路大概是这样的:

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

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;
        }

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

    如有错误,望大神指正!

 

 

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

posted @ 2019-04-10 17:05  一叶、知秋  阅读(2743)  评论(0编辑  收藏  举报