Asp.net网络应用程序显示我是别人电脑上的登录用户
本文关键字:电脑 登录 用户 别人 网络 net 应用程序 显示 Asp | 更新日期: 2023-09-27 18:01:01
好吧,我真的不知道该搜索什么,所以希望有人能帮助我。
我刚刚发布了一个asp.net网络应用程序,经过一番折腾,终于把它加载到了我的浏览器中。
然而,问题是,当我让坐在我旁边的伴侣在他的浏览器中打开网站时,页面显示我是登录用户。
在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((.Token似乎仍在使用我的详细信息,即使它在我没有登录的机器上。
想法?
同意Tim的意见-WindowsIdentity.GetCurrent()
将在服务器上执行,并将返回运行服务器进程(IIS中的工作进程(的windows用户,该用户恰好是您的帐户。
您需要做的是在IIS和ASP.NET(web.config(中设置windows/集成身份验证,然后使用HttpContext.Current.User.Identity
而不是WindowsIdentity.GetCurrent()
。
Web应用程序运行在您登录的Web服务器上(可能是您的计算机(,因此代码WindowsIdentity。GetCurrent((.Token在Web服务器上执行,当然它会返回您的凭据。
Web应用程序身份验证有很多不同的机制,您需要进行一些谷歌搜索。
您很可能会获得服务器上运行的进程的标识。如果您正在使用IIS,这是应用程序池中的帐户设置。按照MSDN链接中的说明进行操作http://msdn.microsoft.com/en-us/library/aa292114(v=vs.71(.aspx,用于在IIS上配置集成Windows身份验证。
您是否尝试过使用User.Identity.Name
获取用户名?
它使用IIdentity接口