专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

c# MVC API 获取访问者IP 并加以验证

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 1:11:05       共计:3642 浏览

使用webapi时有时会为了数据安全性加以访问者ip验证,就需要在API项目中进行处理


   获取访问者IP地址 代码直接上 不罗嗦


/// <summary>

/// 获取访问者IP地址

/// </summary>

/// <returns></returns>

public static string GetHostAddress()

{

      string userIP = "127.0.0.1";


      try

      {

          if (System.Web.HttpContext.Current == null || System.Web.HttpContext.Current.Request == null || System.Web.HttpContext.Current.Request.ServerVariables == null)

              return "";


          string CustomerIP = "";


          //CDN加速后取到的IP

          CustomerIP = System.Web.HttpContext.Current.Request.Headers["Cdn-Src-Ip"];

          if (!string.IsNullOrEmpty(CustomerIP))

          {

              return CustomerIP;

          }


          CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];



          if (!String.IsNullOrEmpty(CustomerIP))

              return CustomerIP;


          if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)

          {

              CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

              if (CustomerIP == null)

                  CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

          }

          else

          {

              CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];


          }


          if (string.Compare(CustomerIP, "unknown", true) == 0)

              return System.Web.HttpContext.Current.Request.UserHostAddress;

          return CustomerIP;

      }

      catch { }


      return userIP;

  }

  /// <summary>

  /// 检查IP地址格式

  /// </summary>

  /// <param name="ip"></param>

  /// <returns></returns>

  public static bool IsIP(string ip)

  {

      return System.Text.RegularExpressions.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 添加过滤


public class CheckSecurityFilter : AuthorizeAttribute

 {

       private HttpContext Context

       {

           get { return HttpContext.Current; }

       }

       public override void OnAuthorization(HttpActionContext actionContext)

       {

           //检查IP

           if (!CheckIP())

           {

                HandleUnauthorizedRequest(actionContext);

               Context.Response.Write("当前IP没有权限!");

               Context.Response.End();

           }

       }

  }

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:.net core webapi 后台获取客户端ip地址 | ·下一条:redis 将key的有效时间设置为不过期命令

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有