2015-06-03 21 views
12

Moje pytanie brzmi: jak działa metoda AuthorizeCore?Jak działa metoda AuthorizeCore?

Na przykład, gdy chciałem tworzyć niestandardowe Autoryzacja atrybut Uważam, że dużo programistów użyć tego kodu

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

a potem napisać swój własny kod.

Jaką rolę odgrywa ten fragment kodu, a metoda sprawdza tylko dla użytkowników systemu Windows, takich jak administrator i inni użytkownicy w zarządzaniu komputerem, jeśli dostosujemy go do użycia w uwierzytelnianiu formularza.

Również znalazłem to code, ale nie rozumiem, dlaczego programista zapisał użytkownika w pliku cookie i sesji zamiast samej sesji.

W PHP użyłem do przechowywania użytkownika tylko w sesji i sprawdzenia, czy on istnieje w sesji, czy nie.

Odpowiedz

7

Jest open source, kod można znaleźć tutaj:

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

I tu specyficzną metodę:

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

nadzieję, że pomoże.

+0

dziękuję, ale czego nie rozumiem, ten fragment kodu "user.Identity.IsAuthenticated" zależy od tego, który użytkownik, czy to zależy od użytkowników stworzonych w zarządzaniu komputerem? –

+0

jest użytkownikiem httpContext ("facet, który używa przeglądarki/klienta") – less

+0

może być bardziej precyzyjny: Właściwość User zapewnia programowy dostęp do właściwości i metod interfejsu IPrincipal. – less