Własna odpowiedź API na brak autoryzacji

Własna odpowiedź API na brak autoryzacji
Adam Janek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
0

Korzystam w swoim API z atrybutów [Authorize()] do sprawdzenia czy token użytkownika jest poprawny i nie wygasł.

Kopiuj
[Authorize(AuthenticationSchemes = "refresh")]
[HttpPost]
public async Task<ActionResult> RefreshToken()

I tutaj moje pytanie, jak mogę zedytować odpowiedź, gdy jest brak autoryzacji? Ten nagłówek zwraca kod 401 i pustą odpowiedź.

Próbowałem w pliku startup.cs zrobić podobnie jak z kodem 404, aby zwracano odpowiedź

Kopiuj
app.Use(async (context, next) =>
            {
                await next();
                if (context.Response.StatusCode == 404)
                {
                    context.Request.Path = "/NotFound";
                    await next();
                }
            });
Kopiuj
[Route("/NotFound")]
        public IActionResult NotFoundEndpoint() =>
            Utilities.ApiResponse.EndpointNotFound(this.HttpContext);

Jednakże dla kodu 401 powyższy sposób nie działa, dlatego szukam pomocy co tego problemu.
Może ktoś robił coś podobnego?

UglyMan
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2206
2

A 401 nie jest wystarczającą odpowiedzią?

BO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 214
4

Ogólnie to 401 powinno ci mówić wszystko ale skoro masz potrzebę podmiany odpowiedzi to najprościej jest nadpisać odpowiedź z defoultowej. Tutaj masz przykład jak to zrobić: https://stackoverflow.com/questions/64082588/asp-core-api-custom-unauthorized-body

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.