.NET Core EntityFramework Identity - 更改IdentityOptions(不在Startup.cs)

问题描述 投票:0回答:1

我正在启动时设置身份选项,调用:

services.AddIdentity<Usuarios, IdentityRole>(options =>
{
    if (usersConfiguration.PasswordLongitud.HasValue)
        options.Password.RequiredLength = usersConfiguration.PasswordLongitud.Value;
    if (usersConfiguration.CantidadIntentosLogin.HasValue)
        options.Lockout.MaxFailedAccessAttempts = usersConfiguration.CantidadIntentosLogin.Value;

    options.Password.RequireLowercase = usersConfiguration.PasswordRequiereMinusculas;
    options.Password.RequireUppercase = usersConfiguration.PasswordRequiereMayusculas;
    options.Password.RequireNonAlphanumeric = usersConfiguration.PasswordRequiereCaracteresRaros;
    options.Password.RequireDigit = usersConfiguration.PasswordRequiereNumeros;
    options.SignIn.RequireConfirmedEmail = usersConfiguration.UsuarioRequiereConfirmacionMail;
})

我想让我的应用程序的用户更改此选项,所以我要做的是从控制器更改身份选项,但我没有找到如何做到这一点。例如,我需要允许用户Administrator更改RequireLowercase选项。如果可能的话,我想避免重新启动IIS以再次调用Startup。

对不起我的英语不好。

c# asp.net-mvc asp.net-core asp.net-identity
1个回答
1
投票

通过将UserManager注入控制器,您可以访问这些选项并进行更改。 Identity选项通过单例进行管理,因此所有请求都将获得更新的值。

public MyController(UserManager<User> userManager)
{
    userManager.Options.Password.RequireDigit = true; //Get something from db, config etc.
}
© www.soinside.com 2019 - 2024. All rights reserved.