В чем отличие использования AllowAnonymous и OverrideAuthorizeAttribute. Это то же самое?AllowAnonymous vs OverrideAuthorizeAttribute
ответ
OverrideAuthorizeAttribute описывает атрибут, который переопределяет текущую функциональность AuthorizeAttribute в соответствии с ее реализацией любым разработчиком (ЭТО НЕ ПРЕДОСТАВЛЯЕТСЯ В ЛЮБОМ ВЕРСИИ ЧИСЛЕННОЙ РАМКИ).
AllowAnonymousAttribute предоставлен .NET для переопределения функциональности AuthorizeAttribute способом, определенным командой .NET. (ЭТО ПРЕДОСТАВЛЯЕТСЯ в .NET FRAMEWORK).
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, любой аутентифицированный пользователь в роли «Пользователи» может получить доступ к методу «Получить действие».