我知道还有其他类似的问题,但没有一个答案对我有帮助。 我在服务器上的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"/>
答案 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