Visual studio 2015 ASP.NET标识-如何在以编程方式创建用户时更改密码要求

Visual studio 2015 ASP.NET标识-如何在以编程方式创建用户时更改密码要求,visual-studio-2015,asp.net-core,asp.net-identity,asp.net-identity-3,Visual Studio 2015,Asp.net Core,Asp.net Identity,Asp.net Identity 3,我正在使用默认的ASP.NET Core 1.1模板和个人用户帐户身份验证。VS2015上的以下代码抱怨密码要求(如长度要求、大写、小写等)。我知道我们可以使用DataAnnotations在内置的RegisterViewModel上设置这些要求。但是由于我是在不使用任何ViewModel的情况下以编程方式创建用户,DataAnnotations将无法工作问题:如何更改密码要求并能够运行以下代码: List<String> usersList = GetAllUsers(); fo

我正在使用默认的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");
}
List usersList=GetAllUsers();
foreach(usersList中的字符串s)
{
var user=newapplicationuser{UserName=s,UserRole=“TestRole”};
var result=await_userManager.CreateAsync(用户,“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>();
}
public void配置服务(IServiceCollection服务)
{
//添加框架服务。
services.AddDbContext(选项=>
options.UseSqlServer(Configuration.GetConnectionString(“DefaultConnection”));
服务.附加性(选项=>
{
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()
.AddDefaultTokenProviders();
services.AddMvc();
//添加应用程序服务。
services.AddTransient();
services.AddTransient();
}

Microsoft文档网站上有一个最新教程


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

您只能通过直接调用商店、绕过usermanager(坏主意)或直接写入users表(坏主意)来实现这一点。密码要求在Startup.cs中设置(通过AddIdentity或您可以显式覆盖它,但它对整个应用程序有效)。最好创建一个安全的密码,即使在中创建用户也是如此Code@Tseng这是一个非常简单的应用程序,具有特定的密码要求,但不满足密码的所有默认要求。问题:1。如何使用
userStore
将上面的最后一行代码替换为代码。2.如果直接使用users表(使用
T-SQL
),如何散列密码?我的startup.cs文件中的AddIdentity仅显示
服务。AddIdentity().AddEntityFrameworkStores().AddDefaultTokenProviders()是,您需要添加选项部分来更改密码选项