0
0

IPHelper.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using System.Linq;
  2. using System.Text.RegularExpressions;
  3. using Microsoft.AspNetCore.Http;
  4. namespace Admin.Core.Common.Helpers
  5. {
  6. public class IPHelper
  7. {
  8. /// <summary>
  9. /// 是否为ip
  10. /// </summary>
  11. /// <param name="ip"></param>
  12. /// <returns></returns>
  13. public static bool IsIP(string ip)
  14. {
  15. 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?)$");
  16. }
  17. public static string GetIP(HttpRequest request)
  18. {
  19. if (request == null)
  20. {
  21. return "";
  22. }
  23. string ip = request.Headers["X-Real-IP"].FirstOrDefault();
  24. if (ip.IsNull())
  25. {
  26. ip = request.Headers["X-Forwarded-For"].FirstOrDefault();
  27. }
  28. if (ip.IsNull())
  29. {
  30. ip = request.HttpContext?.Connection?.RemoteIpAddress?.ToString();
  31. }
  32. if (ip.IsNull() || !IsIP(ip))
  33. {
  34. ip = "127.0.0.1";
  35. }
  36. return ip;
  37. }
  38. }
  39. }