对AuthorizationOptions的依赖注入
本文关键字:注入 依赖 AuthorizationOptions | 更新日期: 2023-09-27 18:11:53
我正在为ASP创建一个授权规则/策略。NET 5 MVC应用程序。创建它非常简单,非常容易,而且它正在工作(通过我的基本测试)。但是,我现在需要将我的数据上下文放入需求中。
我在IAuthorizationRequirement实现中创建了一个构造函数,它接受一个实现DbContext
的MyContext
对象。
我在我的Startup.cs
文件中注册了IAuthorizationRequirement。
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在所有方面都得到利用。
总是这样。把问题贴出来,很快就会有答案。以下是对那些可能遇到我的问题的人的建议。
services.Configure<AuthorizationOptions>(options =>
{
options.AddPolicy("AllowProfileManagement", policy => policy.Requirements.Add(
services.BuildServiceProvider().GetRequiredService< AllowProfileManagementRequirement>()));
});