using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; namespace Crm.Core.Identity.Domain { internal static class IPHelper { /// /// 是否为ip /// /// /// 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?)$"); } /// /// 获得IP地址 /// /// /// public static string GetIP(HttpRequest request) { if (request == null) { return ""; } var ip = request.Headers["X-Real-IP"].FirstOrDefault(); if (string.IsNullOrEmpty(ip)) { ip = request.Headers["X-Forwarded-For"].FirstOrDefault(); } if (string.IsNullOrEmpty(ip)) { ip = request.HttpContext?.Connection?.RemoteIpAddress?.ToString(); } if (string.IsNullOrEmpty(ip) || !IsIP(ip.Split(":")[0])) { ip = "127.0.0.1"; } return ip; } } }