繁体   English   中英

检索浏览我的asp.net Web应用程序的客户端的Windows用户名

[英]Retrieve windows user name of client who browses my asp.net web application

我知道还有其他类似的问题,但是没有一个答案对我有帮助。 我在服务器上的IIS中托管了一个ASP.NET Web应用程序。 该服务器具有Windows操作系统,该Windows操作系统带有Windows用户名,假设:ServerDomain / ServerUserName。 我有一个Main.aspx页面。 该页面具有链接标记:

<a href="#" class="linkbutton" onclick="resendHandle(this)">Resend</a> 

该页面具有脚本标记,并且我具有Java脚本功能:

 function resendHandle(el) {
      var clientWindowsName = ?
      alert(clientWindowsName );
      setCurrentUser(clientWindowsName));
      submit();
 }

现在假设有一个客户端,该客户端也具有Windows操作系统,且带有Windows用户名:ClientXDomain / ClientXUserName正在浏览我的站点。 单击“重新发送”链接后,控件将转到resendHandle Java脚本函数,并在“提交”到Main.aspx.cs(代码文件后面)中的“重新发送”方法之后。 在这种方法中,我要检索客户端Windows用户名,即:ClientXDomain / ClientXUserName。 显然,aspx.cs是服务器代码,因此,如果在此方法中检查用户身份,则将得到:ServerDomain / ServerUserName。 但是正如我已经提到的,我想在此方法中获取:ClientXDomain / ClientXUserName。 在setCurrentUser的帮助下,可从服务器方法访问clientWindowsName,因此,将clientWindowsName变量值(在resendHandle Java脚本函数内)传输到服务器大小对我来说没有问题。 问题是

alert(clientWindowsName );

总是为我返回NULL:

var clientWindowsName = '<%=Page.User.Identity.Name%>';

对于其他选项,我尝试了。 仅适用于:

var clientWindowsName = '<%=Request.LogonUserIdentity.Name.ToString()%>';

它会警告NT AUTHORITYIUSR。

但是没有一个选项可以为我提供所需的用户名:ClientXDomain / ClientXUserName。

那么,我怎么得到它呢? 请注意,我试图在Java Script函数中获取值,也许我应该尝试在script标记之外进行操作。 谢谢!

编辑01:我的网络配置包含:

 <authentication mode="Windows"/>

我认为您需要使用Windows身份验证而不是表单身份验证来配置您的网站,例如https://www.codeproject.com/Articles/94612/Windows-Authentication

我必须禁用匿名身份验证。

启用模拟,这将帮助您获取登录用户身份。 在web.config中,或者可以在IIS服务器上设置它,请检查如何设置它。但这就是您所缺少的。

 <identity impersonate="true" />

您好,如果用户位于活动目录中,则还需要以这种方式设置模拟,然后可以将其标识传递给代码,否则您将获得在IIS下托管该标识的帐户的标识。

https://msdn.microsoft.com/zh-CN/library/aa292118(v=vs.71).aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM