Tworzę regułę/regułę autoryzacji dla mojej aplikacji ASP.NET 5 MVC. Stworzenie go było proste i łatwe do zrobienia i działa (z moimi podstawowymi testami). Jednak teraz muszę wprowadzić kontekst danych do wymagania.Wstrzykiwanie zależności na AuthorizationOptions
Utworzono konstruktora w mojej implementacji IAuthorizationRequirement, która zajmuje obiekt MyContext
, który implementuje DbContext
.
Rejestruję IAuthorizationRequirement tak jak w moim pliku Startup.cs
.
services.Configure<AuthorizationOptions>(options =>
{
options.AddPolicy("AllowProfileManagement", policy => policy.Requirements.Add(
new AllowProfileManagementRequirement(new MyRepository(new MyContext()))));
});
Niestety, kiedy moja reguła działa, MyContext
jest nieświadomy ciągi połączeń, które są wykorzystywane jak tak (dalej w Startup.cs
):
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<MemorialContext>(options =>
options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));
używam DI dla tych typów inaczej (i to działa).
services.AddTransient<MyRepository>(
provider => new MyRepository(provider.GetRequiredService<MyContext>()));
Wiem, co robię, nie jest w porządku, ale nie widzę sposobu, aby to zrobić tak, aby DI był wykorzystywany we wszystkim.