Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

2.7K
Visualizações
ASP.NET Web API: forma correcta de devolver una respuesta 401/no autorizada

Tengo un sitio webapi de MVC que usa la autenticación OAuth/token para autenticar las solicitudes. Todos los controladores relevantes tienen los atributos correctos y la autenticación funciona correctamente.

El problema es que no todas las solicitudes se pueden autorizar en el ámbito de un atributo; se deben realizar algunas comprobaciones de autorización en el código al que llaman los métodos del controlador. ¿Cuál es la forma correcta de devolver una respuesta 401 no autorizada en este caso?

He intentado throw new HttpException(401, "Unauthorized access"); , pero cuando hago esto, el código de estado de respuesta es 500 y también obtengo un seguimiento de la pila. Incluso en nuestro DelegatingHandler de registro podemos ver que la respuesta es 500, no 401.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Debería lanzar unaHttpResponseException desde su método API, no HttpException :

 throw new HttpResponseException(HttpStatusCode.Unauthorized);

O, si desea proporcionar un mensaje personalizado:

 var msg = new HttpResponseMessage(HttpStatusCode.Unauthorized) { ReasonPhrase = "Oops!!!" }; throw new HttpResponseException(msg);
over 4 years ago · Santiago Trujillo Relatório

0

Solo devuelve lo siguiente:

 return Unauthorized();
over 4 years ago · Santiago Trujillo Relatório

0

Como alternativa a las otras respuestas, también puede usar este código si desea devolver un IActionResult dentro de un controlador ASP.NET.

ASP.NET

 return Content(HttpStatusCode.Unauthorized, "My error message");

Actualización: ASP.NET Core

El código anterior no funciona en ASP.NET Core, puede usar uno de estos en su lugar:

 return StatusCode((int)System.Net.HttpStatusCode.Unauthorized, "My error message"); return StatusCode(Microsoft.AspNetCore.Http.StatusCodes.Status401Unauthorized, "My error message"); return StatusCode(401, "My error message");

Aparentemente, la frase de motivo es bastante opcional ( ¿Puede una respuesta HTTP omitir la frase de motivo? )

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda