2017-01-03 2 views
1

Ich möchte einige Test-Benutzer für meine ASP.net MVC Anwendung erstellen. Die Version der Identität ist 2.2.1Test Benutzer mit Passwort-Hash in asp.net Identität erstellen 2.2.1

Mein Code generiert Benutzer nett, aber ich möchte Passwörter zuweisen, die erlauben diese Testkonten anmelden. Also ich glaube, ich muss die gleiche Hash-Funktion aufrufen, wenn Benutzer auf die normale Weise erstellt werden.

Mein Code ist

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

    } 
} 

ja, ich versuche, ein Kennwort von User1 für User1 und User2 für User2 und so weiter.

Grüße, John

+0

Sie müssen den UserManager verwenden, um die Konten zu erstellen. Überprüfen Sie Ihren AccountController und sehen Sie sich an, wie Sie neue Accounts registrieren. sollte Ihnen eine Vorstellung davon geben, was Sie tun müssen – Nkosi

Antwort

2

die UserManager verwenden, um die Konten zu erstellen. Angenommen, Sie verwenden die standardmäßige Identitätsframework-Vorlage. Es sollte eine ApplicationUserManager sein, die von UserManager<ApplicationUser> abgeleitet wurde. Alle erforderlichen Konfigurationen sollten bereits in dieser Klasse enthalten sein.

public async Task CreateTestUsers() { 

    var db = new ApplicationDbContext(); 
    var userStore = new UserStore<ApplicationUser>(db); 
    var userManager = new ApplcationUserManager(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); 
     } 
    } 
} 

Das sollte dann die Testbenutzer genauso wie in der normalen Weise mit Passwörtern erstellen, die alle gehashed und zum Testen bereit sind.

+0

danke. Funktioniert perfekt. Ich habe EmailConfirm = true und LocloutEnabled = False in der ApplicaitonUser-Erstellung hinzugefügt. – grabbag

+0

Ich hatte es anfangs aber entfernt es, um zu entsprechen, was Sie in Ihrem Beispiel hatten. Wie es für das Login notwendig ist, werde ich es zurück zur Antwort hinzufügen. – Nkosi

+0

Ich bin froh, dass es geholfen hat. Glückliche Kodierung !!!! – Nkosi

Verwandte Themen