2015-12-02 1 views

ответ

1

OverrideAuthorizeAttribute описывает атрибут, который переопределяет текущую функциональность AuthorizeAttribute в соответствии с ее реализацией любым разработчиком (ЭТО НЕ ПРЕДОСТАВЛЯЕТСЯ В ЛЮБОМ ВЕРСИИ ЧИСЛЕННОЙ РАМКИ).

AllowAnonymousAttribute предоставлен .NET для переопределения функциональности AuthorizeAttribute способом, определенным командой .NET. (ЭТО ПРЕДОСТАВЛЯЕТСЯ в .NET FRAMEWORK).

1

http://www.asp.net/web-api/overview/security/authentication-and-authorization-in-aspnet-web-api

Две разные, но может иметь тот же эффект, при определенных обстоятельствах. Аутентификация - это процесс проверки пользователя. Переопределения отключают фильтр типа переопределения на следующем высоком уровне. Авторизация - это процесс определения того, должен ли пользователь иметь доступ к определенному ресурсу. Атрибут [AllowAnonymous] отключает аутентификацию, так что web api пропускает аутентификацию и авторизацию во время запроса доступа к контроллеру, украшенному этим атрибутом, или к определенному методу действия, украшенному этим атрибутом. Рассмотрим следующий класс контроллера из статьи, указанной в ссылке

[Authorize] 
public class ValuesController : ApiController 
{ 
    [AllowAnonymous] 
    public HttpResponseMessage Get() { ... } 
    public HttpResponseMessage Post() { ... } 
} 

В приведенном выше примере авторизованных пользователей (любой идентифицированный пользователь) имеют доступ к методу после действия, но никакого разрешения не требуется для метода Get действий.

Авторизация ограничивает доступ к ресурсу тем пользователям, которые принадлежат тем пользователям или ролям пользователей, которым был предоставлен доступ. Атрибут [OverrideAuthorization] отключает шаг [Авторизация], чтобы любой аутентифицированный пользователь имел доступ к методу действия. Это можно увидеть в следующем примере, взятом из статьи.

Рассмотрим следующий класс контроллера:

[Authorize(Roles="Admins")] 
public class SomeController : ApiController { 
    [OverrideAuthorization] 
    [Authorize(Roles="Users")] 
    public IEnumerable<SomeModel> Get() {...} 
    public SomeModel Post() {...} 
    } 

В приведенном выше примере, пользователь должен пройти проверку подлинности и имеют prinicple для доступа к любым из способов действий, определенных контроллером. Однако, хотя только принципы с ролью «Админы» могут получить доступ к методу действия Post, любой аутентифицированный пользователь в роли «Пользователи» может получить доступ к методу «Получить действие».