在ASP.NET / VB.NET中获取请求者的登录信息

时间:2009-06-01 20:33:03

标签: asp.net vb.net authentication

有没有办法从vb.net Web应用程序中获取登录用户? IE,如果有人在本地机器上以“foo”/“bar”身份登录访问该网站,我需要代码才能获得“foo”/“bar”。这是我们内部网上的一个直通,每个人都使用相同的Active Directory。

基本上,我需要收集登录用户的用户名,并根据我们的ActiveDirectory实例进行检查。如果失败了,我需要检查Request变量并检查它们(那部分相当容易)。然后,如果失败,我需要显示一个登录屏幕(我也有一个句柄)。

我已经遇到并丢弃了一些我遇到问题的解决方案:

  1. request.serverVariables(“LOGON_USER”) - 仅当您在IIS中关闭了匿名访问权限且必须使用表单身份验证(我正在使用)时才有效。
  2. http://www.thescarms.com/dotnet/IsInRole.aspx - 此解决方案似乎因某些原因无效。我怀疑AppDomain.CurrentDomain.SetPrincipalPolicy(Principal.PrincipalPolicy.WindowsPrincipal)这一行是问题所在,但到目前为止,这条线的含义已被埋没,我无法弄清楚它究竟在做什么。

3 个答案:

答案 0 :(得分:1)

HttpRequest.LogonUserIdentity?

答案 1 :(得分:1)

如果您正在使用表单身份验证,您是否尝试过System.Web.HttpContext.Current.User.Identity.Name?

答案 2 :(得分:0)

除非两件事情都成立,否则Web浏览器不会将用户的本地凭据发送到Web服务器:

  • Web服务器要求它们(即禁用匿名访问,并启用Windows集成身份验证)。
  • Web浏览器已配置为在询问时发送本地凭据(Internet Explorer选项,可通过插件在FireFox中使用,不确定其他浏览器)。如果浏览器尚未配置为发送信息且Web服务器要求,则会在弹出的登录屏幕中提示用户。