1
resposta

Resposta para usuário não autenticado

Olá. Nas aulas aprendemos que utilizando o Data Annotation [Authorize] nas rotas da Controller é o suficiente para obrigar a autenticação do usuário na chamada. No entanto, quando a rota é chamada sem autenticação, o .NET retorna apenas um erro 404 genérico, sem nenhuma mensagem, o que é ruim para a experiência do usuário que possa estar usando o Front end da aplicação. Como posso declarar uma mensagem de retorno para esse erro? Obrigado.

1 resposta

Olá, Guilherme!

Entendo sua preocupação em fornecer uma experiência de usuário mais amigável. No ASP.NET Core, você pode personalizar a resposta para usuários não autenticados usando o middleware de manipulação de erros.

Você pode configurar isso no método Configure do arquivo Startup.cs. Aqui está um exemplo de como você pode fazer isso:

app.UseStatusCodePages(async context =>
{
    context.HttpContext.Response.ContentType = "text/plain";

    if (context.HttpContext.Response.StatusCode == 401) // Não autorizado
    {
        await context.HttpContext.Response.WriteAsync("Você não está autorizado para acessar este recurso. Por favor, faça login.");
    }
    else if (context.HttpContext.Response.StatusCode == 404) // Não encontrado
    {
        await context.HttpContext.Response.WriteAsync("Recurso não encontrado.");
    }
    // Você pode adicionar mais condições para outros códigos de status aqui
});

Nesse exemplo, se o usuário tentar acessar um recurso para o qual não está autorizado, o servidor responderá com uma mensagem personalizada em vez do erro 404 genérico.

Porém, é importante lembrar que essa é apenas uma das várias maneiras de lidar com isso. Dependendo da complexidade da sua aplicação, você pode querer implementar uma lógica de manipulação de erros mais sofisticada.

Espero ter entendido e conseguido ajudar. Bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software