2015-06-03 3 views
12

Meine Frage ist, wie funktioniert die AuthorizeCore-Methode?Wie funktioniert die AuthorizeCore-Methode?

Zum Beispiel, wenn ich Attribut benutzerdefinierten schaffen wollte Autorisieren fand ich, dass viele Programmierer

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

und dann ihren eigenen Code, den sie schreiben.

Also was ist die Rolle, die dieser Code spielt, und prüft die Methode nur für die Windows-Benutzer wie den Administrator und andere Benutzer in der Computerverwaltung sonst, wenn wir es für die Verwendung in der Formularauthentifizierung anpassen.

Auch ich fand diese code, aber ich verstehe nicht, warum der Entwickler den Benutzer in einem Cookie und Sitzung statt nur der Sitzung gespeichert.

In PHP habe ich den Benutzer nur in einer Sitzung gespeichert und überprüfen, ob er in der Sitzung vorhanden ist oder nicht.

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

und die spezifische Methode hier:

Antwort

7

Es Open Source ist, kann der Code hier zu finden

// 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; 
    } 

Hoffnung, das hilft.

+0

danke, aber was ich nicht verstehe ist, hängt dieses Stück Code "user.Identity.IsAuthenticated" von welchem ​​Benutzer, hängt es von den Benutzern in der Computerverwaltung erstellt? –

+0

Es ist der Benutzer des httpContext ("der Typ, der den Browser/Client verwendet") – less

+0

vielleicht genauer: Die User-Eigenschaft bietet programmgesteuerten Zugriff auf die Eigenschaften und Methoden der IPrincipal-Schnittstelle. – less