.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; }
注:以上思路和代码是本人在开发功能的过程中临时想到的,因为怕忘记,所以记到博客上,具体是否可行,还未进行测试。
如有错误,望大神指正!
更多技术问题,欢迎关注公众号【程序员在职场】进行获取
喜欢本文章的朋友,欢迎关注公众号【程序员在职场】支持一下作者。
作者:程序员在职场
声明:本博客原创文字只代表本人工作中在某一时间内总结的观点或结论,与本人所在单位没有直接利益关系。非商业,未授权,贴子请以现状保留,转载时必须保留此段声明,且在文章页面明显位置给出原文连接。