Atributo de autorização personalizada no .NET Core [duplicado]
Esta pergunta já tem uma resposta aqui:
Como você cria um AuthorizeAttribute personalizado no ASP.NET Cor respostas Estou criando uma API no .NET Core 1.1. Eu construo um @ personalizaUser
objeto deHttpContext.User
em um controlador base que todos os meus outros controladores herdam, e eu tenho a autenticação ativada por padrão (deve ser desativada manualmente com[AllowAnonymous]
quando necessário). OUser
objeto tem umIsAdmin
propriedade. No momento, estou verificando se o usuário é um administrador na parte superior de cada função relevante, como abaixo, mas sinto que deve haver uma maneira de adicionar um atributo personalizado para simplificar e limpar esse código.
Para referência,User.IsAdmin
é uma abreviação para isso:
bool.Parse(HttpContext.User.FindFirst("IsAdmin")?.Value)
Em vez disso:
[HttpGet]
public async Task<IActionResult> Get()
{
if (!User.IsAdmin)
return Forbid();
// logic
}
Eu gostaria disso (ou algo parecido):
[AdminOnly]
[HttpGet]
public async Task<IActionResult> Get()
{
// logic
}
Eu tentei olhar para osource para[AuthorizeAttribute]
para tentar construir, mas é apenas uma concha e não sei de onde a mágica real acontec
Como posso fazer isso