如何在ConfigureServices之外配置IdentityOptions?

时间:2019-08-26 08:28:32

标签: c# asp.net-core asp.net-identity asp.net-core-2.1 asp.net-core-identity

我想基于数据库中的设置而不是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

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我最终将IOptions<IdentityOptions> options注入到Configure()方法中,如下所示:

    public virtual void Configure(IApplicationBuilder app, IOptions<IdentityOptions> options)
    {
      options.Value.Password.RequireDigit = true;
      //rest of configurations...
    }

成功了!

感谢@Kirk提供链接。