Вы можете использовать ClaimsTransformation:
public class Startup
{
public void ConfigureServices(ServiceCollection services)
{
// ...
services.AddTransient<IClaimsTransformation, ClaimsTramsformer>();
}
}
public class CustomClaimsPrincipal : ClaimsPrincipal
{
public override bool IsInRole(string role)
{
// ...
return base.IsInRole(role);
}
}
public class ClaimsTransformer : IClaimsTransformation
{
public Task<ClaimsPrincipal> TransformAsync(ClaimsPrincipal principal)
{
var customPrincipal = new CustomClaimsPrincipal(principal) as ClaimsPrincipal;
return Task.FromResult(customPrincipal);
}
}
Метод контроллера:
[Authorize(Roles = "Administrator")]
public IActionResult Get()
{
// ...
}
При проверке роли по атрибуту Authorize будет использоваться ваш переопределенный метод IsInRole