В моем приложении netcore 3.1 есть фильтр:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class JwtAuthenticationAttribute : Attribute, IAuthorizationFilter
{
// Custom property
public string Permission { get; set; } = "";
private readonly AppSettings _appSettings;
public JwtAuthenticationAttribute(IOptions<AppSettings> appSettings) : base()
{
_appSettings = appSettings.Value;
}
public void OnAuthorization(AuthorizationFilterContext context)
{
throw new NotImplementedException();
}
}
И мне пришлось реализовать Dependency Injection
, потому что мне нужно получить IOptions
в моем конструкторе.
Вкл. мой Startup.cs Мне просто нужно было сделать это:
services.AddScoped<JwtAuthenticationAttribute>();
И затем добавить следующий атрибут в мой метод API:
[ServiceFilter(typeof(JwtAuthenticationAttribute))]
Это все работает, но если вы видите в подробно, у моего фильтра есть пользовательский параметр, который мне нужно передать, и на основании вышеуказанного атрибута я не могу его передать.
Как я могу передать ему атрибут, чтобы я все еще получал доступ к своей введенной зависимости а также параметр.
До DI я использовал:
[JwtAuthentication(Permission = "Security.User.Update")]
Но вышеуказанный способ не может позволить мне получить инъекцию зависимости.
Любой подсказка?