我想基于驻留在数据库中而不是ASP.NET Core Identity
或硬编码值的设置来配置AppSetting.json
。因此,我很想在方法ConfigureServices(IServiceCollection services)
之外调用以下代码:
services.Configure<IdentityOptions>(x => x.Password.RequireDigit = true);
这种调用方式将允许我在尝试配置
DbContext
之前初始化Identity
。目前,我正在使用
services.BuildServiceProvider()
中的ConfigureServices()
访问数据库值。这种样式对我来说有一个很大的缺点:它对应用程序的DbContext
进行了额外的初始化,这很脏而且很慢。另一方面,DbContext
被实例化两次而不是一个。如果能够在
services.Configure<IdentityOptions>()
之外调用ConfigureServices()
,例如在configure()
方法中,则可以基于数据库值配置Identity
选项,而无需两次初始化DbContext
。同样,我的问题是如何在
IdentityOptions
之外配置ConfigureServices
?任何帮助表示赞赏。
最佳答案
我最终将IOptions<IdentityOptions> options
注入到Configure()
方法中,如下所示:
public virtual void Configure(IApplicationBuilder app, IOptions<IdentityOptions> options)
{
options.Value.Password.RequireDigit = true;
//rest of configurations...
}
而且有效!
感谢@Kirk提供的链接。