【问题标题】:Get client name/IP using IIS使用 IIS 获取客户端名称/IP
【发布时间】:2023-03-21 11:38:01
【问题描述】:

如何捕获用户详细信息,例如用户身份或 ip。目前我正在使用 c# mvc,我当前的项目运行良好,并且只能在本地项目的调试模式下运行时捕获用户名和 ip,但是如果我要将它发布到服务器 IIS,每个客户端都会得到服务器信息而不是他们的身份。

这是我的简单电流:

在我的视图中,我有这个来显示用户名:

<html>
<body>
<a id="test" class="navbar-brand" href="#" style="float:right">User</a>
<html>
</body>

<script>
    $(document).ready(function () {

        $.ajax({
            url: '/Home/getUserInfo',
            type: 'GET',
            dataType: 'json',
            success: function (data) {
                document.getElementById("test").innerHTML = data;
            },
            error: function (jqXhr, textStatus, errorThrown) {
                alert(errorThrown);
            }
        });
    });
</script>

在我的控制器上我有这个功能:

public ActionResult getUserInfo()
        {            
            System.Security.Principal.WindowsIdentity user = System.Security.Principal.WindowsIdentity.GetCurrent();

            string name = user.Name;
            return Json(name, JsonRequestBehavior.AllowGet);
        }

任何建议/评论 TIA。

【问题讨论】:

  • 重新用户名,见thisthis。至于远程IP,应该在Request对象中。
  • 通常情况下,您的应用程序会有一个登录屏幕,成功登录后,它会在服务器中为客户端建立一个会话。您的服务器端调用 (getUserInfo()) 应该访问此会话对象,然后返回用户详细信息。正如@John 建议的那样,IP 将在 Request 对象中
  • stackoverflow.com/questions/125341/… 在类似情况下帮助了我

标签: c# asp.net-mvc iis


【解决方案1】:

这仅在用户登录您的应用程序时才有效

public ActionResult GetUserInfo()
{
    string ip = HttpContext.Request.UserHostAddress;
    string name = HttpContext.Request.RequestContext.HttpContext.User.Identity.Name;
    return Json(new { name = name, ip = ip }, JsonRequestBehavior.AllowGet);
}

如果这对你不起作用,我认为这里有一些解决方案>>Getting the name of the current Windows user returning "IIS APPPOOL/Sitename"

【讨论】:

    猜你喜欢
    • 2015-10-01
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 2011-02-24
    • 2016-03-31
    • 1970-01-01
    • 2022-10-05
    相关资源
    最近更新 更多