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

时间:2017-01-03 02:00:25

标签: c# asp.net asp.net-mvc asp.net-identity-2

我想为我的ASP.net MVC创建一些测试用户 应用。身份的版本是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,依此类推。

此致 约翰

1 个答案:

答案 0 :(得分:3)

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

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);
        }
    }
}

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