在 asp.net identity 2.2.1 中使用密码哈希创建测试用户

Creating test users with password hash in asp.net identity 2.2.1

我想为我的 ASP.net MVC 创建一些测试用户 应用。 identity的版本是2.2.1

我的代码很好地生成了用户,但我想分配密码 将允许这些测试帐户登录。所以我相信我需要打电话 以正常方式创建用户时使用的相同哈希函数。

我的密码是

ApplicationDbContext db = new ApplicationDbContext();
...

for (var i=0; i<100; i++)
{
    var name = "User" + i;
    var user = db.Users.FirstOrDefault(u => u.UserName == name);

    if (user == null)
    {
        user = new ApplicationUser() {
                        UserName = name,
                        Email = name + "@" + name + "." + name,
                        PasswordHash = ?????hash of name ?????
                    };
         db.Users.Add(user);
         db.SaveChanges();

    }
}

是的,我正在为 User1 尝试使用 User1 的密码,为 User2 尝试使用 User2 的密码,依此类推。

此致, 约翰

UserManager 将创建帐户。假设您使用的是默认身份框架模板应该有一个 ApplicationUserManager 派生自 UserManager<ApplicationUser> 所有必要的配置应该已经在 class.

public async Task CreateTestUsers() {

    var db = new ApplicationDbContext();
    var userStore = new UserStore<ApplicationUser>(db);
    var userManager = new ApplicationUserManager(userStore);

    for (var i = 1; i <= 100; i++) {
        var username = "User" + i;

        var user = db.Users.FirstOrDefault(u => u.UserName == username);
        if (user == null) {
            user = new ApplicationUser() {
                            UserName = username,
                            Email = username + "@" + username + "." + username,
                            EmailConfirmed = true,
                            LockoutEnabled = false
                        };

            var password = username;
            var result = await userManager.CreateAsync(user, password);
        }
    }
}

然后应该像正常方式一样创建测试用户,密码全部经过哈希处理并准备好进行测试。