如何在配置服务之外配置身份选项?



我想根据驻留在数据库中的设置而不是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的链接。

相关内容

  • 没有找到相关文章

最新更新