2

ログインしたユーザー名を取得するのは簡単だと思いました。実際、スタックオーバーフローで利用可能なほとんどの応答で問題なく動作しますが、Web サイトを公開すると、すべての方法が失敗します。次の条件で、Windows からログインしているユーザーの名前を取得する方法を教えてください。

  1. ログインしたユーザー名が必要なだけなので、応答を書くときは AD のことは忘れてください。

  2. ユーザーが会社の一部ではなく、イントラネット Web サイトにアクセスできるゲスト ユーザーである可能性があるため、Windows 認証モードに変更できません

  3. ユーザーが 6000 人を超えているため、ユーザーのブラウザー設定を変更することはできません。
  4. 誰でもサイトを利用できるようにしたいので、匿名認証を無効にすることはできません。

  5. 私はすでに次の解決策を試しましたが、Web サイトをデバッグ モードで実行するとすべて正常に動作しますが、IIS で Web サイトを公開するとすべてがユーザー名を返さないので、新しい解決策を教えてください。

string _windowLogonUserName = System.Environment.UserName.ToString()

string _windowLogonUserName = 
    WindowsIdentity.GetCurrent().Name.Remove(0, _adDomainName.Length + 1)

string _windowLogonUserName = 
    System.Web.HttpContext.Current.User.Identity.Name.ToString(); 

System.Security.Principal.WindowsIdentity.GetCurrent().Name;

AppDomain appDomain = Thread.GetDomain();
appDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
WindowsPrincipal windowsPrincipal = (WindowsPrincipal)Thread.CurrentPrincipal;
Logger.Write("username principal" + windowsPrincipal.Identity.Name);
Request.ServerVariables["LOGON_USER"]
4

1 に答える 1

2

AD ドメイン外でサイトを公開しているようです。サーバーがドメインにない場合、Windows ユーザーを認証 (または受け入れ) できません。基本的な答えは、あなたはそれを得ることができないということです。

サーバーが内部 (ドメイン上) の場合は、IIS で統合 Windows 認証を有効にすることができます。ここに参照があります

于 2012-12-28T16:21:25.600 に答える