8

我正在运行一个需要能够读取当前用户的登录 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 而不带斜杠。

任何建议表示赞赏。

问候。

4

2 回答 2

11

尝试使用它来检索用户名....

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>
于 2012-07-19T20:28:41.083 回答
1

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

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

于 2016-08-10T07:21:04.143 回答