46

会社の全員がアクセスできるイントラネット asp.net mvc アプリケーションを作成しています。データベースへのアクセスなどで偽装したウェブサイトを運営する必要があるが、各ユーザーが誰であるかを知りたい。

見たらPage.User.Identity.Name真っ白。サイトが偽装されている場合でも、ユーザーの Windows アカウント名を取得することはできますか?

編集: ここにもう少し情報があります。匿名アクセスを有効にして実行している IIS 6 のサイトがあります。このサイトは、データベースにアクセスできるシステム アカウントで実行されています (すべての従業員がデータベースにアクセスできるわけではないため)。

私のweb.configに<authentication mode="Windows" /><identity impersonate="true"/>

私の目標は、ユーザーがログインする必要がないことです。ユーザーがネットワークにログインしているという事実 (およびサイトが外部 IP にないという事実) で十分な認証です。ユーザーが行った変更などを追跡するために、ユーザーが誰であるかを知りたいだけです。

4

4 に答える 4

123

アプリケーションと<authentication mode="Windows"/>IIS で匿名アクセスを有効にすると、次の結果が表示されます。

System.Environment.UserName: Computer Name
Page.User.Identity.Name: Blank
System.Security.Principal.WindowsIdentity.GetCurrent().Name: Computer Name 

アプリケーションで「匿名アクセス」を無効に<authentication mode="Windows"/>し、IIS で「統合 Windows 認証」のみを使用すると、次の結果が表示されます。

System.Environment.UserName: ASPNET (user account used to run ASP.NET service)
Page.User.Identity.Name: Domain\ Windows Account Name 
System.Security.Principal.WindowsIdentity.GetCurrent().Name: Computer Name\ASPNET

<authentication mode="Windows"/>アプリケーションでおよび'匿名アクセス' を無効にし、IIS で '統合 Windows 認証' のみを使用<identity impersonate ="true"/>すると、次の結果が表示されます。

System.Environment.UserName: Windows Account Name 
Page.User.Identity.Name: Domain\ Windows Account Name 
System.Security.Principal.WindowsIdentity.GetCurrent().Name: Domain\ Windows Account Name
于 2009-11-06T15:12:18.350 に答える
6

これを試して

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

ユーザーのログイン名を含む文字列を返す必要があります

于 2009-08-12T15:53:23.077 に答える
4

他の誰もそれについて何も言っていないので、修正を投稿したかっただけです。

サイトをサーバーに公開したときに同じ問題が発生しましたが、ローカルでは発生しませんでした。設定はすべて同じでした。ただし、IIS では、「既定の Web サイト」がオフになったことはありませんでした。関連付けられたサイトがなくても、実行され、トラフィックを傍受していました。匿名認証はデフォルトでオンになっていましたが、ポート 80 で実行されている私の Web サイトではオフになっていました。私のサイトがオフになっていても問題ないようでした...デフォルトがオンになっているため、すべてのトラフィックに対してオンになっていました。ポート 80 へ。

デフォルトの Web を無効にすると、問題が修正されました。また、ポートを 8080 に変更すると機能します。

これが誰かに役立つことを願っています。

于 2018-09-14T21:47:48.107 に答える
1

この機能が MVC フレームワークで変更されていない限り (変更されていないと思われる場合)、Page.User.Identity.Name は引き続き機能するはずです。あなたのサイトは匿名認証を許可するように設定されているようです。その場合は、無効にしてみてください。

于 2009-08-12T15:55:51.387 に答える