Впрыска AutoFac в атрибут

поэтому мне нужно ввести несколько различных сервисов в атрибут авторизации, который я использую. Для простоты я оставлю это, чтобы показать configuration manager.

public class FeatureAuthorizeAttribute : AuthorizeAttribute
{
    public IConfigurationManager ConfigurationManager;

    private readonly string _feature;
    public FeatureAuthorizeAttribute(string feature)
    {
        _feature = feature;

        var test  = ConfigurationManager.GetCdnPath();
    }
}

который будет использоваться следующим образом

[FeatureAuthorize("Admin")]

Я попытался использовать инъекцию конструктора

public FeatureAuthorizeAttribute(string feature, IConfigurationManager configurationManager)
{
   ConfigurationManager = configurationManager;
   _feature = feature
}

однако это просто вызывает ошибку, когда я пытаюсь

[FeatureAuthorize("Admin", IConfigurationManager)]

что кажется неправильным способом сделать это в первую очередь. Я предполагаю что мне нужно зарегистрировать свой пользовательский атрибут авторизации с контейнером, чтобы он начал собирать

1 ответов


вместо того, чтобы пытаться использовать инъекцию зависимостей с атрибутами (что вы не можете сделать каким-либо разумным, полезным способом), создайте Пассивный Атрибутами.

в частности, в этом случае, предполагая, что это ASP.NET сценарий MVC, вы не можете получить от атрибутом authorizeattribute. Вместо этого вы должны заставить службу авторизации искать свой пользовательский атрибут и реализовать IAuthorizationFilter. Затем добавьте фильтр в приложение конфигурация.

более подробную информацию можно найти в этом ответе:https://stackoverflow.com/a/7194467/126014.