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

时间:2017-01-15 09:46:24

标签: javascript c# asp.net

我知道还有其他类似的问题,但没有一个答案对我有帮助。 我在服务器上的IIS中托管了一个ASP.NET Web应用程序。 服务器有一个带有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正在浏览我的站点。 一旦他点击重新发送链接,控制就会流向重新发送处理Java脚本功能,然后提交&#34;提交&#34;到Main.aspx.cs中的Resend方法(代码文件后面)。在这个方法中,我想检索客户端Windows用户名,即:ClientXDomain / ClientXUserName。显然,aspx.cs是一个服务器代码,所以如果我在这个方法中检查用户身份,我会得到:ServerDomain / ServerUserName。但正如我所提到的,我想在此方法中获取:ClientXDomain / ClientXUserName。 在setCurrentUser的帮助下,可以从server方法访问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"/>

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

启用模拟,这将有助于您获取loggined用户身份。 在web.config或它可以在IIS服务器上设置请检查如何设置它。但这是你缺少的。

 <identity impersonate="true" />

嗨,你需要以这种方式设置模拟,如果用户在活动目录中,那么他的身份可以传递给代码,否则你将获得在IIS下托管的身份。

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