如何在 ConfigureServices 之外配置 IdentityOptions?

How to configure IdentityOptions outside ConfigureServices?

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