2014-04-22 13 views
7

Zmieniłem się, aby używać nowej tożsamości ASP.NET 2. Używam Microsoft ASP.NET Identity Samples 2.0.0-beta2.Dodaj użytkownika Imię i nazwisko do tożsamości ASP.NET 2?

Czy ktoś może mi powiedzieć, gdzie i jak mogę zmodyfikować kod tak, że przechowuje użytkownika imię i nazwisko wraz ze szczegółami użytkownika. Czy jest to teraz częścią roszczenia, a jeśli tak, to jak mogę je dodać?

Przypuszczam, że muszę dodać to co jest tutaj metoda rejestr w kontrolerze rachunku:

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

Także jeśli zrobiłem dodać imiona i nazwiska to gdzie jest to zapisane w bazie danych? Czy muszę utworzyć dodatkową kolumnę w tabeli dla tych informacji?

Odpowiedz

11

Musisz dodać go do swojej klasy ApplicationUser więc jeśli używasz Samples tożsamość, wyobrażam sobie, że masz coś takiego w swojej 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; 
    } 
} 

po dodaniu imion i nazwisk to wyglądać tak :

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

Następnie podczas rejestracji użytkownika, należy dodać je do listy teraz, że są one zdefiniowane w ApplicationUser klasy

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

imiona i nazwiska skończy się w AspNetUsers tabeli po wykonaniu migracje

+0

Czy Twoja metoda ostatni sposób to zrobić? Przeszukałem i znalazłem to pytanie: http://stackoverflow.com/questions/21404935/mvc-5-access-claims-identity-user-data Także widzę inne przykłady dodawania rzeczy jako roszczeń. Czy zastanawiałeś się, jak to zrobić? – Melina

+0

tak, to, o co prosisz, nie ma nic wspólnego z roszczeniami ... przeczytaj [to] (http://blogs.msdn.com/b/webdev/archive/2013/10/16/customizing-profile-information -in-asp-net-identity-in-vs-2013-templates.aspx) .. nie ma powodu do nadmiernego komplikowania rzeczy. – dima

+0

Jak można to pokazać w tożsamości jako roszczenia? Czy potrzebuję innego procesu, aby dodać go do tabel roszczeń dla tego użytkownika? – Sinaesthetic

3

Zdaję sobie sprawę, ten post jest kilka lat, ale z ASP.NET podstawowej zyskuje skończyło się tutaj o podobnym pytanie . Przyjęta odpowiedź zaleca zaktualizowanie modelu danych użytkownika w celu przechwytywania tych danych. Nie sądzę, że jest to złe zalecenie, ale z moich twierdzeń badawczych jest to właściwy sposób przechowywania tych danych. Zobacz What is the claims in ASP .NET Identity i User.Identity.Name full name mvc5. Ten ostatni odpowiada osoba z zespołu ASP.NET Identity w firmie Microsoft.

Oto prosty przykładowy kod pokazujący jak dodać te twierdzenia za pomocą Tożsamość ASP.NET:

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

var addClaimsResult = await _userManager.AddClaimsAsync(user, claimsToAdd); 
Powiązane problemy