ASP.NET 身份 - 如何在以编程方式创建用户时更改密码要求

ASP.NET Identity - how to change password requirements when creating user programmatically

我正在使用带有 Individual User Accounts 身份验证的默认 ASP.NET Core 1.1 模板。 VS2015 上的以下代码抱怨密码要求(例如长度要求、大写、小写等)。我知道我们可以使用 DataAnnotations 对内置 RegisterViewModel 设置这些要求。但是由于我是在不使用任何 ViewModel 的情况下以编程方式创建用户,因此 DataAnnotations 将不起作用。 问题:如何更改密码要求并能够运行以下代码:

List<String> usersList = GetAllUsers();

foreach (string s in usersList)
{
    var user = new ApplicationUser { UserName = s, UserRole = "TestRole" };
    var result = await _userManager.CreateAsync(user, "testpassword");
}

您可以在 AddIdentity 方法中添加选项...

public void ConfigureServices(IServiceCollection services)
{
    // Add framework services.
    services.AddDbContext<ApplicationDbContext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

    services.AddIdentity<ApplicationUser, IdentityRole>(options =>
        {
            options.Password.RequireDigit = false;
            options.Password.RequireLowercase = false;
            options.Password.RequireNonAlphanumeric = false;
            options.Password.RequireUppercase = false;
            options.Password.RequiredLength = 1;
            options.User.AllowedUserNameCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@.";
        })
        .AddEntityFrameworkStores<ApplicationDbContext>()
        .AddDefaultTokenProviders();

    services.AddMvc();

    // Add application services.
    services.AddTransient<IEmailSender, AuthMessageSender>();
    services.AddTransient<ISmsSender, AuthMessageSender>();
}

Microsoft Docs 网站上有最新的教程。

Introduction to Identity on ASP.NET Core

您可以使用的其他设置的示例代码中有更多信息,例如“options.Password”。