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

questionAnswers(1)

yourAnswerToTheQuestion