如何解决检查网站用户是否在本地网络上 ASP.NET 核心 MVC
我在 .net 核心 MVC 中创建了一个网站。我的目标是尝试将一些功能隐藏在用户是否在本地网络上之后。
我在 docker for windows 上托管的 linux 容器中运行我的网站。目前,到达该站点的每个用户都有 ip '::ffff:172.17.0.1'。这最初使网站抛出错误。我现在已经进行了一些错误处理,所以这不会抛出。
上面的问题是每个用户都有ip:'::ffff:172.17.0.1'。所有用户都显示为在本地网络上,而实际上并非如此。
我已将其放入我的 startup.cs
文件中的 configure
方法
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor |
ForwardedHeaders.XForwardedProto
});
var remoteIpAddress = context.Connection.RemoteIpAddress;
var networkDetails = new UserNetworkInfomation();
if (remoteIpAddress == null)
return networkDetails;
var isLocalNetwork = remoteIpAddress.AddressFamily == AddressFamily.InterNetworkV6;
try
{
var userIpAddress = isLocalNetwork ? GetHostPublicIP() : $"{remoteIpAddress}";
_logger.Loginformation($"User({remoteIpAddress}) on local network: {isLocalNetwork}");
networkDetails.IpAddress = userIpAddress;
networkDetails.IsLocalNetwork = isLocalNetwork;
}
catch (Exception ex)
{
_logger.LogError(ex,ex.Message);
}
return networkDetails;
传递给上述方法的context
来自HomeController
:
public IActionResult Index()
{
var userNetworkInfomation = _networkChecker.IsLocal(HttpContext);
return View(userNetworkInfomation);
}
有谁知道我在检查用户是否在本地网络上做错了什么?谢谢:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。