好的,我真的不知道该搜索什么,所以希望有人可以帮助我。
我刚刚发布了一个asp.net Web应用程序,经过多次搞乱后终于将它加载到我的浏览器中。
但问题是,当我找到坐在我旁边的伙伴在浏览器中打开网站时,该页面显示我是登录用户。
在default.aspx中,我运行了一些抓取用户窗口标识的代码
LDAPDetails LDAPUser = new LDAPDetails(WindowsIdentity.GetCurrent().Token);
然后LDAPDetails会这样做。
_UserName = windowsId.Name.Substring(windowsId.Name.IndexOf('\\') + 1);
_DomainName = windowsId.Name.ToString().Remove(windowsId.Name.IndexOf('\\'));
//Get users information from active directory
DirectorySearcher search = new DirectorySearcher("LDAP://DCHS");
search.Filter = String.Format("(SAMAccountName={0})", _UserName);
SearchResult result = search.FindOne();
if (result != null)
{
_FullName = result.Properties["givenName"][0].ToString() + ' ' + result.Properties["sn"][0].ToString();
_Email = result.Properties["mail"][0].ToString();
_FirstName = result.Properties["givenName"][0].ToString();
_SSID = windowsId.User.ToString();
_errMsg = "";
}
然后将这些值放入会话变量中。
似乎WindowsIdentity.GetCurrent()。令牌仍在使用我的详细信息,即使它在我没有登录的机器上。
思想?
答案 0 :(得分:3)
Web应用程序正在您登录的Web服务器(可能是您的计算机)上运行,因此代码WindowsIdentity.GetCurrent()。令牌在Web服务器上执行,当然这将返回您的凭据。< / p>
Web应用程序身份验证有许多不同的机制,您需要进行一些谷歌搜索。
答案 1 :(得分:3)
同意Tim - WindowsIdentity.GetCurrent()
将在服务器上执行,并将返回运行服务器进程(IIS中的工作进程)的Windows用户,该用户恰好是您的帐户。
您需要做的是在IIS和ASP.NET(web.config)中设置Windows /集成身份验证,然后使用HttpContext.Current.User.Identity
而不是WindowsIdentity.GetCurrent()
。
答案 2 :(得分:0)
您可能正在获取服务器上运行的进程的标识。如果您使用的是IIS,则这是应用程序池中的帐户设置。按照此MSDN链接http://msdn.microsoft.com/en-us/library/aa292114(v=vs.71).aspx上的说明在IIS上配置集成Windows身份验证。
答案 3 :(得分:0)
您是否尝试过使用User.Identity.Name
获取用户名?