Я не уверен, поможет ли это вам, но я расширил .Net Core с функциональностью с помощью IAuthorizationRequirement.
public class CustomRequirement : IAuthorizationRequirement
{
public CustomRequirement ()
{
}
}
Создать новый класс
public class CustomHandler : AuthorizationHandler<CustomRequirement>
Переопределить HandleRequirementAsync
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, CustomRequirement requirement)
Здесь вы можете извлечь информацию о пользователе из БД, сравнить и т. Д. Если пользователь не разрешен, вернуть
return Task.CompletedTask;
Если пользователь разрешен, тогда используйте
context.Succeed(requirement);
Перед возвращением. Тогда в вашем startup.cs:
services
.AddAuthorization(options =>
{
options.AddPolicy("CustomPolicy", policy =>
policy.Requirements.Add(new CustomRequirement()));
})
И тогда в ваших контроллерах вы можете добавить атрибут
[Authorize(Policy = "CustomPolicy", Roles = "Admin")]
Если требование не выполнено, пользователь получит 401 несанкционированный, что может быть не тем, что вы хотите.