我正在运行一个需要能够读取当前用户登录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,不带斜杠。
感谢任何建议。
问候。
答案 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();