次の方法で共有


DefaultAuthenticationModule.Authenticate イベント

定義

要求が認証された後に発生します。

public:
 event System::Web::Security::DefaultAuthenticationEventHandler ^ Authenticate;
public event System.Web.Security.DefaultAuthenticationEventHandler Authenticate;
member this.Authenticate : System.Web.Security.DefaultAuthenticationEventHandler 
Public Custom Event Authenticate As DefaultAuthenticationEventHandler 

イベントの種類

次のコード例では、 DefaultAuthentication_OnAuthenticate イベントを使用して、 User 現在 HttpContext のインスタンスの プロパティが nullかどうかをテストします。 プロパティが User の場合、サンプルではnull、現在HttpContextのインスタンスの プロパティを オブジェクトにGenericPrincipal設定Userします。このIdentityオブジェクトの GenericPrincipal は、 の値が NameGenericIdentity "default" です。

注意

DefaultAuthentication_OnAuthenticate イベントは、イベントの前に発生しますAuthorizeRequest。 その結果、現在HttpContextのインスタンスの プロパティをUserカスタム ID に設定すると、アプリケーションの動作に影響を与える可能性があります。 たとえば、 クラスを使用FormsAuthenticationしていて、認証されたユーザーのみがサイトにアクセスできるように認証構成セクションでを指定<deny users="?" />した場合、このサンプルでは deny 要素が無視されます。ユーザーの名前は "default" であるためです。代わりに、 を指定<deny users="default" />して、認証されたユーザーのみがサイトにアクセスできるようにします。

public void DefaultAuthentication_OnAuthenticate(object sender,
                                                 DefaultAuthenticationEventArgs args)
{
  if (args.Context.User == null)
    args.Context.User = 
      new System.Security.Principal.GenericPrincipal(
        new System.Security.Principal.GenericIdentity("default"),
        new String[0]);
}
Public Sub DefaultAuthentication_OnAuthenticate(sender As Object, _
                                                args As DefaultAuthenticationEventArgs)
  If args.Context.User Is Nothing Then
    args.Context.User = _
      new System.Security.Principal.GenericPrincipal( _
        new System.Security.Principal.GenericIdentity("default"), _
        new String(0) {})
  End If
End Sub

注釈

イベントは Authenticate 、イベントの後に発生します AuthenticateRequest 。 現在HttpContextのインスタンスの プロパティに User オブジェクトが設定IPrincipalされていることを確認するために使用されます。

クラスの イベントに Authenticate アクセスするには、アプリケーションの DefaultAuthenticationModule Global.asax ファイルで DefaultAuthentication_OnAuthenticate という名前のサブルーチンを指定します。

DefaultAuthentication_OnAuthenticate イベントで オブジェクトの DefaultAuthenticationEventArgs プロパティを使用Contextして、現在HttpContextのインスタンスの プロパティをカスタム IPrincipal オブジェクトに設定Userできます。 プロパティの値Userを指定しない場合、 DefaultAuthenticationModule は、インスタンスの プロパティをUserHttpContext、ユーザー情報をGenericPrincipal含まないオブジェクトに設定します。

DefaultAuthentication_OnAuthenticate イベントは、イベントの後とイベントのAuthenticateRequest前に発生しますAuthorizeRequest。 アプリケーションへのアクセスをauthorization拒否または許可するユーザー名に依存するセクションがある場合、現在HttpContextのインスタンスの プロパティを変更するとUser、アプリケーションの動作に影響する可能性があります。 構成で authorization セクションを指定するときに、DefaultAuthentication_OnAuthenticate イベント中に設定したユーザー名が考慮されていることを確認します。

注意

Web アプリケーションが IIS 7.0 で統合モードで実行されている場合、 AuthenticateDefaultAuthenticationModule イベントは発生しません。 mode 認証構成要素の属性が "None" に設定され、アプリケーションがイベントをAuthenticateサブスクライブすると、PlatformNotSupportedExceptionエラーが発生します。 このシナリオでは、認証通知を受信するには、 インスタンスの AuthenticateRequest イベントを HttpApplication サブスクライブします。 統合モードでの互換性の問題の詳細については、「 ASP.NET アプリケーションを IIS 6.0 から IIS 7.0 に移動する」を参照してください。

適用対象

こちらもご覧ください