Resolução de atributos de filtro no controlador e na ação
Eu gostaria de fazer isso:
[RequiresAuthentication(CompanyType.Client)]
public class FooController
{
public ActionResult OnlyClientUsersCanDoThis()
public ActionResult OnlyClientUsersCanDoThisToo()
[RequiresAuthentication]
public ActionResult AnyTypeOfUserCanDoThis()
Você pode ver por que isso não vai funcionar. Na terceira ação, o filtro no nível do controlador bloqueará os não clientes. Em vez disso, gostaria de "resolver" filtros conflitantes. Eu gostaria que o filtro mais específico (filtro de ação) vencesse sempre. Isso parece natural e intuitivo.
Era uma vez filterContext exposto MethodInfo para a ação de execução. Isso tornaria isso muito fácil. Eu considerei fazer alguma reflexão usando as informações da rota. Isso não funcionará porque a ação pode estar sobrecarregada e não sei dizer qual é a atual em execução.
A alternativa é filtrar os escopos no nível do controlador ou no nível de ação, mas sem mix, o que criará muito ruído extra de atributo.