Admin.Core/src/platform/ZhonTai.Common/Helpers/IPHelper.cs

(完整代码) 1KB

using Microsoft.AspNetCore.Http;
using System.Linq;
using System.Net.NetworkInformation;
using System.Text.RegularExpressions;

namespace ZhonTai.Common.Helpers;

public class IPHelper
{
    /// <summary>
    /// 是否为ip
    /// </summary>
    /// <param name="ip"></param>
    /// <returns></returns>
    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?)$");
    }

    /// <summary>
    /// 获得IP地址
    /// </summary>
    /// <param name="request"></param>
    /// <returns></returns>
    public static string GetIP(HttpRequest request)
    {
        if (request == null)
        {
            return "";
        }

        string ip = request.Headers["X-Real-IP"].FirstOrDefault();
        if (ip.IsNull())
        {
            ip = request.Headers["X-Forwarded-For"].FirstOrDefault();
        }
        if (ip.IsNull())
        {
            ip = request.HttpContext?.Connection?.RemoteIpAddress?.ToString();
        }
        if (ip.IsNull() || !IsIP(ip.Split(":")[0]))
        {
            ip = "127.0.0.1";
        }

        return ip;
    }
}

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。