Как «привязать» атрибут к фильтру действий с помощью Autofac? - PullRequest
4 голосов
/ 21 декабря 2011

У меня есть пользовательский фильтр авторизации, в котором есть зависимости, введенные конструктором.

public class CustomAuthorizationFilter : IAuthorizationFilter

И общий атрибут, который просто хранит данные.

[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
public class CustomAuthorizeAttribute : FilterAttribute

Подход, который я "заимствовал" у здесь , и мне действительно нравится разделение. Я понимаю, как фильтр идет и «получает» атрибут, но я что-то упускаю при подключении.

Как «привязать» атрибут к фильтру, чтобы фильтр вызывался при наличии атрибута? Ninject имеет синтаксис для this . Но я не нашел аналога в Autofac

Если это то, что мне нужно настроить в приложении вне Autofac, это тоже хорошо.

Спасибо! Джош

1 Ответ

1 голос
/ 22 декабря 2011

Вы можете использовать один и тот же класс в качестве фильтра и атрибута. Но вы также можете определить другой атрибут и проверить, был ли он определен.

Затем вы должны зарегистрировать свой класс фильтра / атрибута: внутри Global.asax, как и filters.Add(new HandleErrorAttribute());.

Внутри filterMethods (в ​​вашем случае должно быть OnAuthorize), вы можете проверить, был ли определен какой-либо другой атрибут IsDefined или определено ли какое-либо свойство.

...