Assuming you are using .NET, one way to do this is to implement your own role and membership providers. Then you could add functionality by implementing an interface that contained the elements you wanted (I just knocked this sample off the top of my head, so I apologize if this seems a little rude):
public interface ICustomRole
{
bool IsInRole(string userName, object[] params roles);
}
public class MyCustomRole : RoleProvider, ICustomRole
{
public IsInRole(MembershipUser user, object[] params roles)
{
if (roles == null || roles.Length == 0)
throw new ArgumentException("roles");
}
}
:
bool isValid = ((ICustomRole)Roles.Provider).IsInRole(
User, new[] { "Admin", "Moderator", "Validator" });