【发布时间】:2019-12-30 10:25:11
【问题描述】:
我想根据数据库中的设置而不是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?
感谢任何帮助。
【问题讨论】:
-
选项模式支持 DI。请参阅docs。
-
@KirkLarkin,我将
IOptions<IdentityOptions>注入到Configure()方法中,它似乎正在工作。介意添加这个作为答案吗?
标签: c# asp.net-core asp.net-identity asp.net-core-2.1 asp.net-core-identity