Я пытаюсь создать настраиваемый атрибут авторизации для моего проекта WebApi.Атрибут авторизации простого инжектора webapi
В этом атрибуте я хотел бы ввести объект IAuthModule. Я понятия не имею, как это реализовать. Я нашел некоторые решения в Интернете, но я не добился успеха ни с одним из них.
Это то, что я до сих пор:
public void Configuration(IAppBuilder app)
{
// WebApi config
HttpConfiguration config = new HttpConfiguration();
// SimpleInjector
var container = new SimpleInjector.Container();
container.Register<IAuthModule, CoreAuthModule>();
container.RegisterWebApiFilterProvider(config);
container.RegisterWebApiControllers(config);
container.Verify();
config.DependencyResolver = new SimpleInjectorWebApiDependencyResolver(container);
// Setup Oauth
ConfigureOAuth(app, container.GetInstance<IAuthModule>());
WebApiConfig.Register(config);
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
app.UseWebApi(config);
}
и атрибут:
public class CustomAuthorizationAttribute : AuthorizeAttribute
{
// how can I inject something here?
public IAuthModule AuthModule { get; set; }
protected override bool IsAuthorized(HttpActionContext actionContext)
{
return false;
}
}
В новой версии Simple Injector нет 'RegisterWebApiFilterProvider' метода. – Chandermani
@Steven есть альтернатива 'RegisterWebApiFilterProvider' в SimpleInjector 4? * Редактировать * @Chandermani нашел это: https://simpleinjector.readthedocs.io/en/latest/webapiintegration.html#injecting-dependencies-into-web-api-filter-attributes В основном просто используйте шаблон локатора сервисов (анти) , – GFoley83