ASP.NET Core MVC密码验证器

9
什么是在asp.net core MVC中自定义密码验证规则的简单方法?问题与此处的某人完全相同How To Change Password Validation in ASP.Net MVC Identity 2?唯一的区别是我正在使用最新版本的asp.net CORE MVC(Visual Studio 2015)。我想删除所有密码验证规则。项目中没有ApplicationUserManager类,也不确定是否可以在Startup.cs文件中自定义UserManager验证规则。
3个回答

14
public void ConfigureServices(IServiceCollection services)
{
     services.AddIdentity<ApplicationUser, IdentityRole>(options =>
            {
                options.Password.RequireDigit = true;
                options.Password.RequireLowercase = true;
                options.Password.RequireNonAlphanumeric = true;
                options.Password.RequireUppercase = true;
                options.Password.RequiredLength = 6;
                options.User.AllowedUserNameCharacters = null;
            })
            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultTokenProviders();
}

注意:您还应在 RegisterViewModel.Password、ResetPasswordViewModel.Password、ChangePasswordViewModel.NewPassword 和 SetPasswordViewModel.NewPassword 中更改您的新设置,以启用前端上的新验证。


9

如果你想简单地禁用一些密码限制(如 RequireLowercase、RequiredLength 等),可以在 Startup 中配置 IdentityOptions.Password,像这样:

services.Configure<IdentityOptions>(o =>
{
    o.Password.RequiredLength = 12;
});

如果您想完全更改密码验证逻辑 - 实现IPasswordValidator并在启动时注册。


2
您可以使用公共类来自定义错误消息。就像这样:

您也可以使用公共类来自定义错误消息。就像这样:

public class CustomIdentityErrorDescriber : IdentityErrorDescriber
{
    public override IdentityError PasswordRequiresDigit()
    {
        return new IdentityError
        {
            Code = nameof(PasswordRequiresDigit),
            Description = "Your personal describe error message here."
        };
    }

}

在你的 Statup.cs 文件中,添加以下内容至 ConfigureService 中:
public void ConfigureServices(IServiceCollection services)
{
    services.AddIdentity<ApplicationUser, IdentityRole>()
            .AddEntityFrameworkStores<IdentityContext>()
            .AddErrorDescriber<CustomIdentityErrorDescriber>()
            .AddDefaultTokenProviders();

     //...
}

1
虽然问题是关于密码验证而不是消息的,但这仍然很有用。对于任何将使用此功能的人来说,你只需要一个类,内部重写每个你想要自定义的错误描述器,只需一个.AddErrorDescriber<ClassName>()即可。 - SwodniwS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接