代码之家  ›  专栏  ›  技术社区  ›  LosManos

如何在aspnet core 2.1中设置密码选项

  •  5
  • LosManos  · 技术社区  · 6 年前

    我已经跟踪了 SO example code 以及 official documentation 但是,我在我的aspnet core 2.1项目中更改了密码长度,没有任何更改。
    我总是收到这样的信息:“密码必须至少为6个字符,最长为100个字符。”

    public void ConfigureServices(IServiceCollection services) 我试过了

    services.Configure<IdentityOptions>(options =>
    {
      options.Password.RequiredLength = 1;
    });
    

    在不同的地方,或添加到 AddDefaultIdentity<>

    services.AddDefaultIdentity<IdentityUser>(options =>
        options.Password.RequiredLength = 1;
      )
      .AddEntityFrameworkStores<ApplicationDbContext>();
    

    但无济于事。

    我正在使用 non-scaffolded version 所以我不能访问HTML或CSHTML文件。

    2 回复  |  直到 6 年前
        1
  •  3
  •   Kirk Larkin    6 年前

    看起来你找到了一个 缺陷 搭脚手架的原因。在包含ASP.NET核心标识UI的Razor页面实现的Razor类库中,有一个 InputModel 类为 Register 页面如下:

    public class InputModel
    {
        ...
    
        [Required]
        [StringLength(100, ErrorMessage = "The {0} must be at least {2} and at max {1} characters long.", MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "Password")]
        public string Password { get; set; }
    
        ...
    }
    

    从这个代码片段中可以清楚地看到,无论您设置什么 RequiredLength 到,内置 ModelState 验证将始终需要6到100个字符的长度。

    值得注意的是,这不仅影响 寄存器 佩奇-我已经确认它也会影响 ResetPassword , SetPassword ChangePassword .

    就解决方案而言: Chris Pratt 在评论中指出,解决这一问题的唯一真正方法是搭建受影响的页面,并对 StringLength 属性。


    更新:The issue 你已经提出了一个封闭的副本,解决方案是脚手架的网页和作出所需的更改。

        2
  •  1
  •   I_Al-thamary    6 年前

    这些都是密码的选项: https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity-configuration?view=aspnetcore-2.2

    services.Configure<IdentityOptions>(options =>
    {
        // Default 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;
    });
    

    要修改规则,请参见 How override ASP.NET Core Identity's password policy https://andrewlock.net/creating-custom-password-validators-for-asp-net-core-identity-2/