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