2014-04-22 3 views
7

Ich wechselte, um die neue ASP.NET Identity 2 zu verwenden. Ich verwende tatsächlich die Microsoft ASP.NET Identity Samples 2.0.0-Beta2.Hinzufügen von Benutzer Vorname und Nachname zu einer ASP.NET Identity 2?

Kann mir jemand sagen, wo und wie ich den Code ändern kann, so dass es einen Benutzer First und Nachname zusammen mit den Benutzerdetails speichert. Wäre das jetzt Teil eines Anspruchs und wenn ja, wie könnte ich es hinzufügen?

Ich nehme an, ich würde das hier hinzufügen müssen, welche die Registerverfahren im Konto-Controller ist:

 if (ModelState.IsValid) 
     { 
      var user = new ApplicationUser { UserName = model.Email, Email = model.Email }; 
      var result = await UserManager.CreateAsync(user, model.Password); 
      if (result.Succeeded) 
      { 
       var code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id); 
       var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme); 
       await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking this link: <a href=\"" + callbackUrl + "\">link</a>"); 
       ViewBag.Link = callbackUrl; 
       return View("DisplayEmail"); 
      } 
      AddErrors(result); 
     } 

Auch wenn ich den Vor- und Nachnamen dann tue hinzufügen, wenn dies in der Datenbank gespeichert ist? Muss ich für diese Information eine zusätzliche Spalte in einer Tabelle erstellen?

Antwort

11

Sie werden es zu Ihrem ApplicationUser Klasse hinzufügen müssen also, wenn Sie Identity Samples verwenden, ich denke, Sie so etwas haben in Ihrem IdentityModels.cs

public class ApplicationUser : IdentityUser { 
    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager) { 
     // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType 
     var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie); 
     // Add custom user claims here 
     return userIdentity; 
    } 
} 

nach Vor- und Nachname Hinzufügen es würde wie folgt aussehen : Dann

public class ApplicationUser : IdentityUser { 
    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager) { 
     // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType 
     var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie); 
     // Add custom user claims here 
     return userIdentity; 
    } 

    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

, wenn Sie Benutzer registrieren, müssen Sie sie in die Liste hinzuzufügen, jetzt, wo sie in ApplicationUser Klasse definiert sind

var user = new ApplicationUser { UserName = model.Email, Email = model.Email, FirstName = "Jack", LastName = "Daniels" }; 

Vor- und Nachnamen werden bis in AspNetUsers Tabelle beenden, nachdem Sie die Migrationen tun

+0

Ist Ihre Methode die neueste Art und Weise, es zu tun? Ich suchte herum und fand diese Frage: http://stackoverflow.com/questions/21404935/mvc-5-access-claims-identity-user-data Auch ich sehe einige andere Beispiele für das Hinzufügen von Dingen als Ansprüche jetzt. Haben Sie sich über die Art und Weise der Schadensabwicklung informiert? – Melina

+0

ja, was Sie fragen, hat nichts mit Ansprüchen zu tun ... lesen [this] (http://blogs.msdn.com/b/webdev/archive/2013/10/16/customizing-profile-information -in-asp-net-identity-in-vs-2013-templates.aspx) .. es gibt keinen Grund, Dinge zu kompliziert zu machen – dima

+0

Wie bekommt man das in der Identität als Claim? Benötige ich einen anderen Prozess, um ihn den Anspruchstabellen für diesen Benutzer hinzuzufügen? – Sinaesthetic

3

Ich weiß, das Post ein paar Jahre alt, aber mit ASP.NET-Core an Zugkraft gewinnen landete ich hier oben eine ähnliche Frage mit . Die akzeptierte Antwort empfiehlt, dass Sie Ihr Benutzerdatenmodell aktualisieren, um diese Daten zu erfassen. Ich denke nicht, dass es eine schlechte Empfehlung ist, aber aus meinen Nachforschungen geht hervor, dass diese Daten korrekt gespeichert werden. Siehe What is the claims in ASP .NET Identity und User.Identity.Name full name mvc5. Letzteres wird von jemandem aus dem ASP.NET Identity-Team von Microsoft beantwortet.

Hier ist ein einfaches Code-Beispiel zeigt, wie Sie diese Ansprüche mit ASP.NET Identität hinzufügen:

var claimsToAdd = new List<Claim>() { 
    new Claim(ClaimTypes.GivenName, firstName), 
    new Claim(ClaimTypes.Surname, lastName) 
}; 

var addClaimsResult = await _userManager.AddClaimsAsync(user, claimsToAdd); 
Verwandte Themen