Внедрение зависимостей от AuthorizationOptions
Я создаю правило / политику авторизации для моего приложения ASP.NET 5 MVC. Создание было простым и довольно простым, и это работает (с моими основными тестами). Однако теперь мне нужно включить контекст данных в требование.
Я создал конструктор в моей реализации IAuthorizationRequirement, которая принимает MyContext
объект, который реализует DbContext
,
Я регистрирую требование IAuthorizationRequire так в моем Startup.cs
файл.
services.Configure<AuthorizationOptions>(options =>
{
options.AddPolicy("AllowProfileManagement", policy => policy.Requirements.Add(
new AllowProfileManagementRequirement(new MyRepository(new MyContext()))));
});
К сожалению, когда мое правило работает, MyContext
не знает строки подключения, которые используются как так (далее в Startup.cs
):
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<MemorialContext>(options =>
options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));
В противном случае я использую DI для этих типов (и это работает).
services.AddTransient<MyRepository>(
provider => new MyRepository(provider.GetRequiredService<MyContext>()));
Я знаю, что я делаю не правильно, но я не вижу, как сделать это правильно, чтобы DI использовался во всем.
1 ответ
Это как всегда работает. Отправьте вопрос, и ответ придет вскоре после. Вот как для тех, кто может столкнуться с моим вопросом.
services.Configure<AuthorizationOptions>(options =>
{
options.AddPolicy("AllowProfileManagement", policy => policy.Requirements.Add(
services.BuildServiceProvider().GetRequiredService< AllowProfileManagementRequirement>()));
});