DefaultAuthenticationModule.Authenticate Händelse

Definition

Inträffar när begäran har autentiserats.

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 

Händelsetyp

Exempel

I följande kodexempel används händelsen DefaultAuthentication_OnAuthenticate för att testa om egenskapen för den aktuella User instansen HttpContext är null. Om egenskapen User är nullanger User exemplet egenskapen för den aktuella HttpContext instansen GenericPrincipalIdentity till ett GenericPrincipal objekt där objektet är ett GenericIdentity med Name värdet "standard".

Note

Händelsen DefaultAuthentication_OnAuthenticate utlöses före händelsen AuthorizeRequest . Om du anger egenskapen för den aktuella User instansen HttpContext till en anpassad identitet kan det därför påverka programmets beteende. Om du till exempel använder FormsAuthentication klassen och anger <deny users="?" /> i avsnittet auktoriseringskonfiguration för att säkerställa att endast autentiserade användare har åtkomst till din webbplats, kommer det här exemplet att göra så att neka-elementet ignoreras, eftersom användaren har ett namn som är "standard". I stället anger <deny users="default" /> du för att se till att endast autentiserade användare kan komma åt din webbplats.

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

Kommentarer

Händelsen Authenticate utlöses efter händelsen AuthenticateRequest . Den används för att säkerställa att User egenskapen för den aktuella HttpContext instansen fylls i med ett IPrincipal objekt.

Du kan komma åt Authenticate händelsen för DefaultAuthenticationModule klassen genom att ange en underrutin med namnet DefaultAuthentication_OnAuthenticate i programmets Global.asax-fil.

Du kan använda Context egenskapen DefaultAuthenticationEventArgs för objektet i händelsen DefaultAuthentication_OnAuthenticate för att ange User egenskapen för den aktuella HttpContext instansen till ett anpassat IPrincipal objekt. Om du inte anger något värde för User egenskapen DefaultAuthenticationModule anger egenskapen för instansen UserHttpContext till ett GenericPrincipal objekt som inte innehåller någon användarinformation.

Händelsen DefaultAuthentication_OnAuthenticate utlöses efter AuthenticateRequest händelsen och före händelsen AuthorizeRequest . Om du har ett authorization avsnitt som är beroende av användarnamnet för att neka eller tillåta åtkomst till ditt program kan det påverka programmets beteende om du ändrar User egenskapen för den aktuella HttpContext instansen. Se till att användarnamnet som du angav under DefaultAuthentication_OnAuthenticate-händelsen beaktas när du anger auktoriseringsavsnittet i konfigurationen.

Note

Om webbprogrammet körs i IIS 7.0 i integrerat läge utlöses Authenticate inte händelsen DefaultAuthenticationModule . mode Om attributet för autentiseringskonfigurationselementet är inställt på "Ingen" och programmet prenumererar Authenticate på händelsen utlöses ett PlatformNotSupportedException fel. Om du vill ta emot autentiseringsmeddelandet i det här scenariot prenumererar du på AuthenticateRequest instansens HttpApplication händelse. Mer information om kompatibilitetsproblem i integrerat läge finns i Moving an ASP.NET Application from IIS 6.0 to IIS 7.0.

Gäller för

Se även