Wie kann ich einen Autorisierungsfilter für einen bestimmten GET-Handler in der Web-API deaktivieren?ASP.NET-Web-API Autorisierungsfilter für einen Handler überschreiben
Es gibt einen benutzerdefinierten Autorisierungsfilter auf Klassenebene, aber für eine der Methoden muss ich keine Sicherheit haben. Ich habe versucht, [AllowAnonymous]
Attribut anwenden, aber es läuft immer noch durch die höheren Filter und schlägt fehl. Dieser benutzerdefinierte Filter stammt von AuthorizationFilterAttribute
. Die Klasse hat auch zwei weitere Attribute: OverrideAuthentication
und EnableCors
.
Ich versuchte AllowAnonymous
Attribut, aber es tut es nicht.
Beispielcode:
[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: Die verknüpfte Antwort nicht erklären, was die Lösung ist.
Was passiert, wenn Sie '[OverrideAuthentication]' und '[AccountAuthorization]' vom Controller entfernen? –
Mögliches Duplikat von [AllowAnonymous funktioniert nicht mit Custom AuthorizationAttribute] (http://StackOverflow.com/questions/13595723/allowanonymous-not-working-with-custom-authorizationAttribute) –
Siehe auch, Sie können möglicherweise anonym an erlauben bestimmte URLs in der Web-API .. http://StackOverflow.com/Questions/14588397/disable-Windows-Authentication-for-Webapi –