Я хотел бы сделать это:
[RequiresAuthentication(CompanyType.Client)]
public class FooController
{
public ActionResult OnlyClientUsersCanDoThis()
public ActionResult OnlyClientUsersCanDoThisToo()
[RequiresAuthentication]
public ActionResult AnyTypeOfUserCanDoThis()
Вы можете понять, почему это не сработает. На третьем действии фильтр уровня контроллера будет блокировать не-клиентов. Я бы хотел вместо этого «разрешить» конфликтующие фильтры. Я хотел бы, чтобы более конкретный фильтр (фильтр действий) всегда побеждал. Это кажется естественным и интуитивно понятным.
Давным-давно filterContext предоставил MethodInfo для выполнения действия. Это сделало бы это довольно легко. Я подумал о том, чтобы сделать некоторое отражение самостоятельно, используя информацию о маршруте Это не сработает, потому что действие может быть перегружено, и я не могу сказать, какой из них выполняет текущий.
Альтернативой является использование фильтров на уровне контроллера или на уровне действия, но без микширования, что создаст много дополнительного атрибутного шума.