Посмотрите на эту статью и этот ответ на аналогичный вопрос, и я думаю, что вы сможете прийти прямо.
СутьСтатья и ответ таковы: ваш атрибут не должен выполнять эту работу, потому что атрибуты не имеют конструктора, допустимого для DI. Фильтр, с другой стороны, выполняет и может проверять наличие определенного атрибута, и если он есть, он выполняет эту работу.