2015-06-03 13 views
12

La mia domanda è: come funziona il metodo AuthorizeCore?Come funziona il metodo AuthorizeCore?

Per esempio, quando ho voluto creare personalizzato autorizzare attributo ho scoperto che un sacco di programmatori utilizzare questo codice

var isAuthorized = base.AuthorizeCore(httpContext); 
if (!isAuthorized) 
    { 
    return false; 
    } 

e poi scrivere il proprio codice.

Quindi qual è il ruolo che questo pezzo di codice riproduce, e il metodo controlla solo gli utenti di Windows come l'amministratore e altri utenti creati nella gestione del computer, se lo personalizziamo per l'autenticazione del modulo.

Inoltre ho trovato questo code ma non capisco perché lo sviluppatore ha memorizzato l'utente in un cookie e una sessione invece della sola sessione.

In PHP, ho usato solo per memorizzare l'utente in una sessione e controllare se esiste nella sessione oppure no.

risposta

7

è open source, il codice può essere trovato qui:

https://github.com/ASP-NET-MVC/aspnetwebstack/blob/master/src/System.Web.Mvc/AuthorizeAttribute.cs

E qui il metodo specifico:

// This method must be thread-safe since it is called by the thread-safe OnCacheAuthorization() method. 
    protected virtual bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     if (httpContext == null) 
     { 
      throw new ArgumentNullException("httpContext"); 
     } 

     IPrincipal user = httpContext.User; 
     if (!user.Identity.IsAuthenticated) 
     { 
      return false; 
     } 

     if (_usersSplit.Length > 0 && !_usersSplit.Contains(user.Identity.Name, StringComparer.OrdinalIgnoreCase)) 
     { 
      return false; 
     } 

     if (_rolesSplit.Length > 0 && !_rolesSplit.Any(user.IsInRole)) 
     { 
      return false; 
     } 

     return true; 
    } 

Speranza che aiuta.

+0

grazie, ma quello che non capisco è, questo pezzo di codice "user.Identity.IsAuthenticated" dipende da quale utente, dipende dagli utenti creati nella gestione del computer? –

+0

è l'utente di httpContext ("il tipo che utilizza il browser/client") – less

+0

forse più preciso: la proprietà User fornisce accesso programmatico alle proprietà e ai metodi dell'interfaccia IPrincipal. – less

Problemi correlati