![](/img/trans.png)
[英]How to get Client computer name from Asp.net web application (internet application)
[英]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.