获取ASP.NET应用程序中的当前用户名

时间:2012-07-19 19:31:19

标签: c# asp.net

我正在运行一个需要能够读取当前用户登录ID的网页。这是我正在使用的代码:

string id = System.Security.Principal.WindowsIdentity.GetCurrent().Name;

目前这会返回正确的登录信息,但是当我在此方法中使用它时:

protected Boolean isPageOwner()
{
    string id = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
    alert("User: " + id);
    if (id.Equals(pageOwnerID))
    {
        return true;
    }
    if (accessPermission.ContainsKey(id))
    {
        return true;
    }
    return false;
}

即使返回的id与pageOwnerID相同,该方法也会返回false。我真的不确定我遇到问题的哪一部分。

另外,我的登录ID的格式为string1 / string2,但代码将其检索为string1 + string2,不带斜杠。

感谢任何建议。

问候。

2 个答案:

答案 0 :(得分:9)

尝试使用此方法检索用户名....

if (System.Web.HttpContext.Current.User.Identity.IsAuthenticated)
{
   string username = System.Web.HttpContext.Current.User.Identity.Name;
}

听起来好像没有使用Windows身份验证 - 您需要禁用匿名访问并启用Windows集成安全性。

将此添加到您的web.config ...

<system.web>
 <authentication mode="Windows"/>
  <authorization>
    <deny users="?"/> 
  </authorization>
</system.web>

答案 1 :(得分:0)

如果您需要从任何层(或解决方案中的项目)中获取当前登录用户的身份,请使用:

string userId = Thread.CurrentPrincipal.Identity.GetUserId();