2

ASP.NET と C# で Web サイトを開発しています。

私はウェブサイトを作成したので、ユーザーがサイトにアクセスすると、Windows クライアントのユーザー名が次のように読み上げられます。

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

次に、データベースで彼のユーザー名を検索し、返されたデータから必要なすべてのデータ (チーム、名前、権限レベル、役割など) を使用してユーザー オブジェクトを作成します。次に、ユーザーがログアウトするまで、このオブジェクトをセッション変数に保持します。

これはローカルでは魅力的に機能していましたが、サーバーにデプロイしたのでdefaultAppPool、すべてのユーザーに対して取得しました。

私は何を間違っていますか?

私の web.config ファイルには次のものがあります。

authentication mode="Windows"

私が自分で展開を行うのはこれが初めてであり、これを除いてすべてがスムーズに進んだことを認めなければなりません。

4

4 に答える 4

4

あなたが発見したようSystem.Security.Principal.WindowsIdentity.GetCurrent()に、アプリケーション プールの ID を提供します。

を使用する必要がありますHttpContext.Current.User.Identity

于 2012-12-10T21:28:06.807 に答える
1

Windows 認証と IIS ASP.NET アプリケーションに Windows 認証を選択した場合は、IIS 内での認証も構成する必要があります。これは、Windows 認証が IIS に委任されるためです。IIS では、次の 4 つの認証方法から選択できます。

  1. 匿名認証を選択すると、IIS は認証を実行しません。誰でも ASP.NET アプリケーションにアクセスできます。
  2. 基本認証を選択した場合、ユーザーは接続するために Windows ユーザー名とパスワードを提供する必要があります。この情報はネットワーク上で平文で送信されるため、基本認証はインターネット上で危険なほど安全ではなくなります。
  3. ダイジェスト認証を選択した場合でも、ユーザーは接続するために Windows ユーザー名とパスワードを提供する必要があります。ただし、パスワードはネットワーク経由で送信される前にハッシュされます。ダイジェスト認証では、すべてのユーザーが Internet Explorer 5 以降を実行していて、Windows アカウントが Active Directory に保存されている必要があります。
  4. Windows 統合認証を選択すると、パスワードがネットワークを通過することはありません。ユーザーは引き続き Windows ユーザー名とパスワードを持っている必要がありますが、ユーザーの認証には Kerberos またはチャレンジ/レスポンス プロトコルが使用されます。Windows 統合認証では、すべてのユーザーが Internet Explorer 3.01 以降を実行している必要があります。
于 2012-12-10T18:21:31.117 に答える
0

現在のユーザー ID を次のように取得します。

var userWinId = HttpContext.Current.User.Identity as WindowsIdentity;
于 2015-05-15T17:40:59.873 に答える