O atributo herdado de AuthorizeAttribute não está funcionando

Atualmente, estou tentando implementar a segurança em um novo aplicativo ASP MVC 5, com base nas funções do usuário. O objetivo é impedir que os usuários acessem determinados controladores ou métodos de controlador se eles não tiverem uma determinada função (ou superior). Com base no que li sobre a questão até agora, criei um atributo que herda AuthorizeAttribute que se parece com isso (MyAppRole é um enum, btw):

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public sealed class AuthorizeRoleOrSuperiorAttribute : AuthorizeAttribute
{
    private MyAppRole _authorizedRole;

    public AuthorizeRoleOrSuperiorAttribute(MyAppRole authorizedRole)
    { //Breakpoint here
        _authorizedRole = authorizedRole;
    }

    public override void OnAuthorization(HttpActionContext actionContext)
    { //Breakpoint here
        base.OnAuthorization(actionContext);

        if (!UserInfo.GetUserRoles().Any(r => (int)r >= (int)_authorizedRole))
            throw new UnauthorizedAccessException(ErrorsModule.RoleMissing);
    }
}

E eu chamo assim em métodos e / ou controladores:

[AuthorizeRoleOrSuperior(MyAppRole.Admin)]
public class MyController : Controller
{
    [AuthorizeRoleOrSuperior(MyAppRole.Admin)]
    public ViewResult Index()
    {
        [...]
    }

    [...]
}

Coloquei um ponto de interrupção no construtor e no método OnAuthorization, mas, quando inicio o aplicativo e ligo para o controlador ou método em questão, nunca bato em nenhum deles e a ação é chamada, mesmo que eu nem esteja logado.

Nota: o AuthorizeAttribute está funcionando corretamente quando eu o uso.

Alguma idéia do que poderia impedir o atributo de funcionar e filtrar acessos?

questionAnswers(1)

yourAnswerToTheQuestion