获取请求者';在ASP.NET/VB.NET中登录

获取请求者';在ASP.NET/VB.NET中登录,asp.net,vb.net,authentication,Asp.net,Vb.net,Authentication,有没有办法从vb.net web应用程序获取登录用户?也就是说,如果有人在本地机器上以“foo”/“bar”登录访问该站点,我需要代码来获取“foo”/“bar”。这是为了在我们的内部网上传递信息,每个人都使用相同的Active Directory 本质上,我需要获取登录用户的用户名,并对照ActiveDirectory实例进行检查。如果失败,我需要检查请求变量并检查它们(这一部分相当简单)。如果失败,我需要显示一个登录屏幕(我也有一个句柄) 对于我遇到问题的部分,我已经遇到并放弃了一些解决方案

有没有办法从vb.net web应用程序获取登录用户?也就是说,如果有人在本地机器上以“foo”/“bar”登录访问该站点,我需要代码来获取“foo”/“bar”。这是为了在我们的内部网上传递信息,每个人都使用相同的Active Directory

本质上,我需要获取登录用户的用户名,并对照ActiveDirectory实例进行检查。如果失败,我需要检查请求变量并检查它们(这一部分相当简单)。如果失败,我需要显示一个登录屏幕(我也有一个句柄)

对于我遇到问题的部分,我已经遇到并放弃了一些解决方案:

  • request.serverVariables(“LOGON\u USER”)-只有在IIS中关闭了匿名访问时,此选项才有效,并且必须打开才能使用forms身份验证(我正在使用)
  • -由于某种原因,此解决方案似乎不起作用。我怀疑这行AppDomain.CurrentDomain.SetPrincipalPolicy(Principal.PrincipalPolicy.WindowsPrincipal)是个问题,但这行的含义到目前为止我还不知道它到底在做什么

  • HttpRequest.LogonUserIdentity?

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

    Web浏览器不会将用户的本地凭据发送到Web服务器,除非有两件事是正确的:

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

    您需要打开身份验证,否则它将始终是匿名/默认用户。还没有。我认为当前的。用户将是我需要的,但我需要看多一点。谢谢你的主意!当然您还可以执行Current.User.IsInRole(“somerole”)以了解他们的角色是什么(如果您设置了角色)。