WebApi限制IP地址请求

2021-09-28 05:14

阅读:687

标签: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


评论


亲,登录后才可以留言!