2014-04-22 26 views
7

Sono passato a utilizzare la nuova identità di ASP.NET 2. In realtà utilizzo gli esempi di identità di Microsoft ASP.NET 2.0.0-beta2.Aggiungere nome utente e cognome a un ID 2 ASP.NET?

Qualcuno può dirmi dove e come posso modificare il codice in modo che memorizzi il nome e il cognome di un utente insieme ai dettagli dell'utente. Questo sarebbe ora parte di un reclamo e se sì, come potrei aggiungerlo?

suppongo avrei bisogno di aggiungere questo qui che è il metodo registro nel controllore conto:

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

Anche se ho fatto aggiungere i nomi e cognomi allora dove viene questa memorizzato nel database? Devo creare una colonna aggiuntiva in una tabella per queste informazioni?

risposta

11

Avrai bisogno di aggiungerlo alla classe ApplicationUser quindi se si utilizza campioni di identità, immagino di avere qualcosa di simile nella vostra 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; 
    } 
} 

dopo l'aggiunta di nomi e cognomi che sarebbe simile a questa :

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

Poi al momento della registrazione dell'utente, è necessario aggiungerli alla lista ora che sono definite nella classe ApplicationUser

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

nomi e cognomi finiranno in AspNetUsers tavolo dopo aver effettuato le migrazioni

+0

è il vostro metodo l'ultimo modo di farlo? Ho cercato in giro e ho trovato questa domanda: http://stackoverflow.com/questions/21404935/mvc-5-access-claims-identity-user-data Inoltre vedo alcuni altri esempi di aggiungere cose come crediti ora. Hai esaminato il modo di affermarlo per farlo? – Melina

+0

sì, quello che stai chiedendo non ha nulla a che fare con le affermazioni ... leggi [questo] (http://blogs.msdn.com/b/webdev/archive/2013/10/16/customizing-profile-information -in-asp-net-identity-in-vs-2013-templates.aspx) .. non c'è motivo di complicare eccessivamente le cose – dima

+0

Come si ottiene a comparire nell'identità come reclamo? Ho bisogno di un altro processo per aggiungerlo alle tabelle sinistri per quell'utente? – Sinaesthetic

3

mi rendo conto che questo post è vecchia di qualche anno, ma con ASP.NET Nucleo di trazione guadagnando sono finito qui con una domanda simile . La risposta accettata raccomanda di aggiornare il modello dati utente per acquisire questi dati. Non penso che sia una cattiva raccomandazione, ma dalle mie affermazioni di ricerca è il modo corretto di archiviare questi dati. Vedere What is the claims in ASP .NET Identity e User.Identity.Name full name mvc5. A quest'ultimo viene data risposta da qualcuno del team Identity ASP.NET di Microsoft.

Ecco un esempio semplice codice mostrando come si aggiungono quelle pretese utilizzando ASP.NET Identità:

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

var addClaimsResult = await _userManager.AddClaimsAsync(user, claimsToAdd); 
Problemi correlati