0

オプション「匿名ユーザーを許可する」を使用して、現在ASP WebページにログオンしているユーザーのWindowsログインを取得する公式の方法またはハックが可能かどうか疑問に思いますか? または、おそらくインポートされたWindows DLLを使用していますか?

通常、「匿名ユーザーの拒否」を使用すると、ログインウィンドウを簡単に取得できることがわかります。しかし、特別な理由で、Windows ログインを取得して匿名ユーザーを受け入れたいと考えています。そのため、Windows ログインがデータベース内のユーザーである場合、別の Web ページにリダイレクトします。

私はそれを確認しました:(ただし、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>
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#ではケース センシティブであることを覚えておいてください。ほとんどの場合、正しい大文字と小文字の区別はUPPERであり、そのリストは次のとおりです。

サーバー変数のリスト

于 2013-06-26T14:06:04.477 に答える