我想基于数据库中的设置而不是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
?
感谢您的帮助。
答案 0 :(得分:0)
我最终将IOptions<IdentityOptions> options
注入到Configure()
方法中,如下所示:
public virtual void Configure(IApplicationBuilder app, IOptions<IdentityOptions> options)
{
options.Value.Password.RequireDigit = true;
//rest of configurations...
}
成功了!
感谢@Kirk提供链接。