using System.Net;
using Microsoft.AspNetCore.Http;
using Microsoft.IdentityModel.Tokens;
namespace Bunny.Common.Utils.Net;
public static partial class NetUtil
{
///
/// 获取请求的IP地址
///
/// HttpContext 上下问对象
/// 是否获取IPv4地址,默认为IPv4
/// IP地址
public static string GetRequestIpAddress(HttpContext context, bool getIpv4AddressType = true)
{
// 获取IP地址
var ipAddress = context.Connection.RemoteIpAddress!.ToString();
// 转换IP地址格式
var ip = IPAddress.Parse(ipAddress);
// 转换成IPv4
var toIPv4 = ip.MapToIPv4().ToString();
// 转换成IPv6
var toIPv6 = ip.MapToIPv6().ToString();
// 如果获取IPv4地址
ipAddress = getIpv4AddressType ? toIPv4 : toIPv6;
// 如果有IP直接返回
return ipAddress.IsNullOrEmpty() ? "" : ipAddress;
}
}