web-dev-qa-db-fra.com

Comment retourner un message personnalisé en cas d'échec de l'autorisation dans l'API Web

Dans mon projet WebAPI, j'ai plusieurs API qui sont décorées de [Authorize] attribut.

[Authorize]
public HttpResponseMessage GetCustomers()
{
   //my api
}

Si l'utilisateur n'a pas le jeton de droit, une exception d'accès refusé est renvoyée à l'utilisateur.

Mais ce dont j'ai besoin, c'est que dans un tel cas, je dois renvoyer le message de réponse personnalisé sous la forme.

{
  "StatusCode" : 403,
  "message": "You donot have sufficient permission"
}

Comment renvoyer ce message personnalisé en cas d'échec de l'autorisation.

Notez s'il vous plaît:

  • J'utilise l'authentification basée sur Owin - Token.
  • Je pas stocke le jeton d'accès dans ma base de données ou ailleurs.
17
Kgn-web

Il existe différentes façons de le faire, mais l'une des meilleures pourrait être les attributs d'autorisation personnalisés. Il vous suffit d'hériter de la méthode AuthorizeAttribute et de remplacer HandleUnauthorizedRequest().

public class CustomAuthorization : AuthorizeAttribute
{
    protected override void HandleUnauthorizedRequest(HttpActionContext actionContext)
    {
        actionContext.Response = new HttpResponseMessage
        {
            StatusCode = HttpStatusCode.Forbidden,
            Content = new StringContent("You are unauthorized to access this resource")
        };
    }
}

et utilisez ceci comme (CustomAuthorization devrait être utilisé à la place de Authorize)

    [CustomAuthorization]       
    public IHttpActionResult Get()
    {
        return Ok();
    }

Sinon, vous pouvez également attraper le code d'état côté client et afficher le message personnalisé de votre choix.

24