WebApi限制IP地址请求
2021-09-28 05:14
标签:using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;using System.Web.Http.Filters;using System.Net.Http;using System.Net;using System.Collections;using System.Text.RegularExpressions;using System.IO;using System.Web.UI.WebControls;using System.Text;using System.Web.Caching;using System.Xml.Linq;namespace IM.WeiXinApi.Filter{ public class AuthorizeAttrbute : System.Web.Http.Filters.AuthorizationFilterAttribute { public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext) { var ipaddress = GetIpaddress(); //用户的ip object obj = null; obj = GetCache(ipaddress+"api"); //获取请求api的ip列表 { if (obj == null) { if (!IpConfig(ipaddress)) { //返回401错误 actionContext.Response = new HttpResponseMessage { Content = new StringContent("当前ip地址" + ipaddress + "无访问权限", Encoding.GetEncoding("UTF-8"), "application/json"), StatusCode = HttpStatusCode.Unauthorized }; return; } else { SetCache(ipaddress+"api",1, 6); } } } base.OnAuthorization(actionContext); } public static bool IpConfig(string ip) { string urlIndex = "~/Xml/roleip.xml"; string FileName = System.Web.HttpContext.Current.Server.MapPath(urlIndex); XDocument doc = XDocument.Load(FileName); var rel = from p in doc.Descendants("item") where p.Attribute("ip").Value.ToLower() == ip select p; return rel != null && rel.Count() > 0 ? true : false; } /// /// 获取当前应用程序指定CacheKey的Cache值 /// /// /// public static object GetCache(string CacheKey) { System.Web.Caching.Cache objCache = HttpRuntime.Cache; return objCache[CacheKey]; } /// /// 设置缓存 /// /// /// /// public static void SetCache(string CacheKey, object objObject, double expires_in) { Cache objCache = HttpRuntime.Cache; objCache.Insert(CacheKey, objObject, null, DateTime.Now.AddHours(expires_in), Cache.NoSlidingExpiration); } /// /// 获取IP地址 /// /// public static string GetIpaddress() { string result = String.Empty; result = HttpContext.Current.Request.ServerVariables["HTTP_CDN_SRC_IP"]; if (string.IsNullOrEmpty(result)) result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; if (string.IsNullOrEmpty(result)) result = HttpContext.Current.Request.UserHostAddress; if (string.IsNullOrEmpty(result) || !IsIP(result)) return "127.0.0.1"; return result; } public static bool IsIP(string ip) { return Regex.IsMatch(ip, "^((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)$"); } }}WebApi限制IP地址请求标签:原文地址:http://www.cnblogs.com/nzcblog/p/5073871.html
上一篇:HTML知识点汇总
下一篇:Javascript不能做什么?