Добрый день!
Использую .net core 3.1
Сделал кастомный фильтр:
public class AuthorizeRoles : Attribute, IFilterFactory
{
public bool IsReusable => false;
public RoleEnum[] roles { get; set; }
public IFilterMetadata CreateInstance(IServiceProvider serviceProvider)
{
var filter = serviceProvider.GetService(typeof(RolesValidation)) as RolesValidation;
filter.roles = roles;
return filter;
}
}
Теперь я могу его использовать в каких-нибудь методах:
[HttpPost]
[Route("[action]")]
[AuthorizeRoles(roles = new RoleEnum[] { RoleEnum.roleManagement, RoleEnum.admin })]
public async Task SetRoles([FromBody] UserAndRolesDto dto)
{
await service.SetRoles(dto.UserId, dto.Roles);
}
Проблема в том, что я хотел бы использовать сокращенную запись, что-то вроде такого:
[AuthorizeRoles(RoleEnum.roleManagement, RoleEnum.admin )]
//или даже
[Authorize(RoleEnum.roleManagement, RoleEnum.admin )]
Такую штуку можно было сделать в .net framework, так как можно было сделать конструктор с params RoleEnum[] roles, но в .net core не получается и не могу найти подходящей информации в поисковике