检查网站用户是否在本地网络上 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 (将#修改为@)