我有一个用ASP.net和C#构建的网站。我们称之为webapp。它使用Form系统登录到它,并且不能轻易更改。
我收到了将登录更改为某种Windows身份验证的请求。我会解释一下。 我们的Windows登录使用活动目录供用户登录其Windows帐户。他们的登录名是sXXXXXXX。 X是数字。 在我的webapp中,我想从他们的活动目录登录中获取用户号码,并检查它们是否存在于webapp数据库中。如果它存在,它们将自动登录。如果不存在,它们将被引用到当前正在使用的webapp系统的常规登录页面。
我尝试更改我的IIS以禁用匿名登录并启用Windows身份验证,因此使用户浏览器将其当前登录的用户名发送到我的webapp。我也将Web配置从“Forms”更改为“Windows”,这使得我的整个webapp已经过时,因为整个表单系统都不起作用。
我的问题是 - 浏览器是否有不同的方式将用户名发送到我的webapp?我想也许是javascript,我只是不知道如何实现它,如果它甚至可能。我知道它不是很安全,但所有这些平台和系统都是在互联网之外构建的,它位于专用网络上。
答案 0 :(得分:2)
<script language="javascript">
var username = '<%HttpContext.Current.User.Identity.Name %>';
</script>
答案 1 :(得分:1)
通过javascript获取用户域凭据的唯一方法是部署某种类型的ActiveX组件以将该数据公开给浏览器。我不建议这样做。
我会考虑为表单身份验证实现一个Login页面,该页面身份验证使用HttpContext.Current.User
对页面加载上的用户进行身份验证。
表单的工作方式是,如果未经身份验证的用户尝试访问访问控制的页面并且尚未登录(没有cookie),则会将其重定向到登录页面,该登录页面使设施可以登录(这会设置一个客户端的cookie)。然后将用户定向到他们最初请求的页面。您只需自动登录部分即可。
如果您需要手动登录的传递和用户混合,您可以检查他们的客户端IP地址,看它是否与您的域名匹配。
答案 2 :(得分:1)
我找到的用于获取发送到服务器的用户名的解决方案是:
string winlogon = Request.ServerVariables["LOGON_USER"];
在IIS中启用Windows身份验证模式后。