如何在asp网页上获取Windows登录用户?

时间:2013-06-20 10:06:46

标签: asp.net authentication authorization membership

我想知道是否有可能通过官方方式或黑客检索当前登录到具有“允许匿名用户”选项的asp网页的用户的Windows登录?或者使用导入的windows dll?

我知道通常使用“拒绝匿名用户”我可以轻松检索登录窗口。但由于某些特殊原因,我想检索Windows登录并接受匿名用户。因此,如果Windows登录是我的数据库中的用户,我会重定向到另一个网页。

我已经知道:(但是windowsLogin ==总是空的)

ASP-C#

string windowsLogin = System.Security.Principal.WindowsPrincipal.Current.Identity.Name;
string windowsLogin = System.Threading.Thread.CurrentPrincipal.Identity.Name;
string windowsLogin = System.Net.CredentialCache.DefaultCredentials.ToString();
string windowsLogin = Request.ServerVariables["LOGON_USER"].ToString();

的Web.config

<authorization>
      <deny users ="?" /><!-- Deny acces to anonymous users-->
      <allow users ="*" /><!-- Allow acces to every users-->
    </authorization>
    <identity impersonate="true"/>
    <authentication mode="Forms">
      <forms loginUrl="./WebLogin.aspx" defaultUrl="./default.aspx" timeout="12" path="/" name=".ASPXFORMSAUTH" slidingExpiration="true"  />
    </authentication>

1 个答案:

答案 0 :(得分:0)

您似乎需要允许匿名用户,并且您可能希望尝试Windows身份验证。

<authorization>
  <allow users ="*" /><!-- Allow acces to every user and do not deny anonymous -->
</authorization>
<authentication mode="Windows" />

在某些情况下,似乎已为C#折旧ServerVariables

如果是这样,你需要这样做:

string login = System.Security.Principal.WindowsIdentity.GetCurrent().Name;

如果您真的想使用ServerVariables,请记住它们在C#中是 CaSe Sensitive 。正确的套管几乎总是 UPPER ,以下是它们的列表:

List of ServerVariables