2016-07-20 20 views
0

Erstmalige Implementierung von Autorisierung in ASP.Net Web API. Ich muss eine benutzerdefinierte Autorisierung für mein Web-API-Projekt implementieren. Die Anforderung besteht darin, die Benutzer für eine vorhandene Tabelle zu autorisieren. Ich bin auf this Link gestoßen. Ich möchte wissen, wie die nicht autorisierte Anfrage behandelt wird? Wie stellen wir sicher, dass "HandleUnauthorizedRequest" die "nicht autorisierte" Nachricht sendet und die Anwendung die API-Methode nicht ausführen lässt. Insbesondere was zu schreiben in:Implementieren eines benutzerdefinierten Autorisierungsfilters für ASP.Net Web API

HandleUnauthorizedRequest(System.Web.Http.Controllers.HttpActionContext actionContext) 
{ 
//Code to handle unauthorized request. Give the user error message instead of serving the request. 
} 

Gibt es eine bessere Möglichkeit, SQL-Tabelle basierte Autorisierung für ASP.Net Web-API zu implementieren?

+0

Bevor Sie den Autorisierungsteil beantworten, wie verwalten Sie die Authentifizierung? Es hängt davon ab, wie Sie den Authentifizierungsteil implementieren. – Win

Antwort

0

Sie sind auf dem richtigen Weg. Die Verwendung eines Autorisierungsfilters ist eine Option. Wenn die Autorisierung fehlschlägt, können Sie eine Instanz der Klasse UnauthorizedException oder sogar eine benutzerdefinierte HttpResponseMessage zurückgeben. Eine andere Option ist die Verwendung eines AuthorizeAttribute oder speziell eines Custom AuthorizeAttribute.

Dass gesagt wird - mit der Berechtigung Filteroption Sie so etwas wie folgendes tun:

public override void OnAuthorization(HttpActionContext filterContext) 
    { 
     try 
     { 
      // your custom authorization logic 
      if not authorized // pseudo code 
       filterContext.Response = new HttpResponseMessage(HttpStatusCode.Unauthorized); 
       return; 

     } 
     catch (Exception) 
     { 
      filterContext.Response = new HttpResponseMessage(HttpStatusCode.Forbidden); 
      return; 
     } 

     base.OnAuthorization(Unauthorized); 
    } 

Möglicherweise möchten Sie mit einem Rahmen wie ASP.NET Identity gegen Ihre individuelle Lösung betrachten.