【问题标题】:How to configure IdentityOptions outside ConfigureServices?如何在 ConfigureServices 之外配置 IdentityOptions?
【发布时间】: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&lt;IdentityOptions&gt;(),例如在configure() 方法中,我将能够根据数据库值配置Identity 选项,而无需两次初始化DbContext

再次,我的问题是如何在ConfigureServices之外配置IdentityOptions

感谢任何帮助。

【问题讨论】:

  • 选项模式支持 DI。请参阅docs
  • @KirkLarkin,我将IOptions&lt;IdentityOptions&gt; 注入到Configure() 方法中,它似乎正在工作。介意添加这个作为答案吗?

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


【解决方案1】:

我最终将IOptions&lt;IdentityOptions&gt; options 注入Configure() 方法,如下所示:

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

它成功了!

感谢@Kirk 提供链接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-25
    • 1970-01-01
    • 2021-01-13
    • 2018-08-20
    • 1970-01-01
    • 2019-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多