asp.net-core - 如何从数据库 asp.net core 2 动态设置 IdentityOptions
问题描述
如何从数据库 asp.net core 2 动态设置 IdentityOptions?
我可以静态设置
services.Configure<IdentityOptions>(options =>
{
// Password settings.
options.Password.RequireDigit = true;
options.Password.RequireLowercase = true;
options.Password.RequireNonAlphanumeric = true;
options.Password.RequireUppercase = true;
options.Password.RequiredLength = 6;
options.Password.RequiredUniqueChars = 1;
// Lockout settings.
options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5);
options.Lockout.MaxFailedAccessAttempts = 2;
options.Lockout.AllowedForNewUsers = true;
// User settings.
options.User.AllowedUserNameCharacters =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+";
options.User.RequireUniqueEmail = true;
});
但我想从数据库配置它。我有一些关于那个的专栏。
var staticSetting = _unitOfWork.StaticSettings.GetAll().FirstOrDefault();
staticSetting.RequireDigit
staticSetting.RequireLowercase
staticSetting.RequireNonAlphanumeric
staticSetting.RequireUppercase
staticSetting.RequiredLength
staticSetting.RequiredUniqueChars
staticSetting.DefaultLockoutTimeSpanFromMinutes
staticSetting.MaxFailedAccessAttempts
staticSetting.AllowedForNewUsers
我如何以及在哪里可以从数据库中设置它?
解决方案
对于此要求,您可以IUnitOfWork
从服务集合中解决,例如
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, IOptions<IdentityOptions> identityOptions)
{
this.staticSetting = app.ApplicationServices.CreateScope().ServiceProvider
.GetRequiredService<ApplicationDbContext>().StaticSettings.FirstOrDefault();
identityOptions.Value.Password.RequireDigit = staticSetting.RequireDigit;
}
}
您无法配置IdentityOptions
by,services.Configure<IdentityOptions>
因为这将在方法期间add-migration
和之前运行Configure
。
推荐阅读
- python - Tatsu:如何在语义动作中验证/处理类似算术的表达式
- java - 在 SharedPreference.Editor 上调用 putString 时,我的应用程序强制关闭
- javascript - 如何覆盖 target="_blank" 行为
- postgresql - R2DBC 和枚举 (PostgreSQL)
- javascript - 如何找到 iframe 的有效链接?
- c# - Swagger 没有找到 ApiVersion 的操作
- c++ - 这个额外的关键字在这个 c++ 类声明中是什么意思?
- java - 测量哪些 Java 代码需要很长时间才能编译
- angular - 为什么在 Angular 8 中生成服务时出现“错误 TS1005: 'from' expected”
- r - R 通过子集和添加两列改进代码