Как отключить фильтр авторизации для конкретного обработчика GET в веб-API?ASP.NET Web API Переопределить фильтр авторизации для обработчика
На уровне класса имеется специальный фильтр авторизации, но для одного из методов мне не нужна безопасность. Я попытался применить атрибут [AllowAnonymous]
, но он все еще проходит через фильтр более высокого уровня и терпит неудачу. Этот настраиваемый фильтр происходит от AuthorizationFilterAttribute
. Класс также имеет два других атрибута: OverrideAuthentication
и EnableCors
.
Я пробовал атрибут AllowAnonymous
, но это не так.
Пример кода:
[EnableCors(origins: "*", headers: "*", methods: "*")]
[OverrideAuthentication]
[AccountAuthorization]
public class AccountsController : ApiController
{
[Route("api/accounts/{accountNumber}/GetX")]
[AllowAnonymous]
[HttpGet]
public HttpResponseMessage GetX(string accountNumber)
{
HttpResponseMessage response = null;
IEnumerable<string> apiKey;
if (!Request.Headers.TryGetValues("X-ApiKey", out apiKey) || apiKey.Count() != 1 || apiKey.First() != API_KEY)
{
throw new HttpResponseException(HttpStatusCode.Forbidden);
}
// Process
// ..
// ..
return response;
}
}
EDIT: Связанный ответ не объясняет, что это решение.
Что делать, если вы удалите '[OverrideAuthentication]' и '[AccountAuthorization]' из контроллера? –
Возможный дубликат [AllowAnonymous не работает с Custom AuthorizationAttribute] (http://stackoverflow.com/questions/13595723/allowanonymous-not-working-with-custom-authorizationattribute) –
См. Также, вы можете разрешить анонимность конкретные URL-адреса в веб-интерфейсе http://stackoverflow.com/questions/14588397/disable-windows-authentication-for-webapi –