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