2015-06-03 3 views
12

Мой вопрос в том, как работает метод AuthorizeCore?Как работает метод AuthorizeCore?

Например, когда я хотел создать пользовательский атрибут Авторизоваться Я обнаружил, что многие программисты используют этот код

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

, а затем они пишут свой собственный код.

Какова роль этой части кода, и этот метод проверяет только пользователей Windows, таких как администратор и других созданных пользователей, в управлении компьютером еще, если мы настроим его для использования в аутентификации формы.

Также я нашел это code, но я не понимаю, почему разработчик сохранил пользователя в cookie и сеансе вместо сеанса.

В PHP я использовал для хранения пользователя только в сеансе и проверял, существует ли он в сеансе или нет.

ответ

7

Она с открытым исходным кодом, код можно найти здесь:

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

А вот конкретный метод:

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

Надежда, что помогает.

+0

спасибо, но я не понимаю, этот фрагмент кода «user.Identity.IsAuthenticated» зависит от того, какой пользователь зависит от пользователей, созданных в управлении компьютером? –

+0

это пользователь httpContext («парень, который использует браузер/клиент») – less

+0

может быть более точным: свойство User предоставляет программный доступ к свойствам и методам интерфейса IPrincipal. – less

Смежные вопросы