Если это Core, то использовать политики, что-то примерно
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthorization(x =>
{
x.AddPolicy("RoleStartWith", policy => {
policy.RequireRole(roles.Where(r => r.StartsWith("ad")));
});
});
}
[Authorize(Policy = "RoleStartWith")]
public IActionResult Index()
{
return View();
}
Если это, например, MVC5, то можно использовать кастомный атрибут как то так:
public class CustomAutorizeAttribute : AuthorizeAttribute
{
private string _prefix;
private string[] _roles;
public CustomAutorizeAttribute(string prefix)
{
_prefix = prefix;
_roles = base.Roles.Split(',').Select(x => x.Trim()).ToArray();
}
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
return _roles.Where(x => x.StartsWith(_prefix)).Any(x => httpContext.User.IsInRole(x));
}
}
[CustomAutorize(prefix = "ad")]
public IActionResult Index()
{
return View();
}
Писал все на коленке в блокноте, руками не проверял, но основная мысль, надеюсь, понятна.