0

我想知道是否有可能以官方方式或黑客来检索当前登录带有选项“允许匿名用户”的 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();

网页配置

<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>
4

1 回答 1

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 敏感。正确的大小写几乎总是UPPER,这是它们的列表:

服务器变量列表

于 2013-06-26T14:06:04.477 回答