2014-04-22 19 views
7

Yeni ASP.NET Kimlik 2'yi kullanmak için değiştim. Aslında Microsoft ASP.NET Kimlik Örnekleri 2.0.0-beta2'yi kullanıyorum.Kullanıcı adı Soyadı ve Soyadı bir ASP.NET Kimliğine 2?

Kimsenin kodu ve kodu nasıl değiştirebileceğimi söyleyebilmeleri için kullanıcı adıyla birlikte bir Kullanıcı Adı ve Soyadı kaydedebilir. Bu şimdi bir iddianın parçası olacak mıydı ve eğer öyleyse nasıl ekleyebilirim?

Ben hesap Kontrol ünitesindeki kayıt yöntemi olan burada bu eklemeniz gerekir varsayalım: Ayrıca

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

bu veritabanında saklanır nerede o ilk ve son adlar eklemek yaptıysa? Bu bilgi için bir tabloda ek bir sütun oluşturmam gerekiyor mu?

cevap

11

Kimlik Örnekleri kullanırsanız, sana böyle bir şey var hayal sahibi olması için ApplicationUser sınıfa eklemeniz gerekir senin 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; 
    } 
} 

bu şekilde görünecektir İlk ve Son Adları ekledikten sonra : Eğer kullanıcı kayıt sırasında

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

Sonra ApplicationUser sınıfa

içinde tanımlandıkları şimdi listeye eklemek gerekir Eğer göçler
+0

bunu yapmanın en yeni yolu yöntemi var mı? Bu soruyu araştırdım ve şu soruyu sordum: http://stackoverflow.com/questions/21404935/mvc-5-access-claims-identity-user-data Ayrıca, şimdi iddia olarak bir şeyler ekleyerek başka örnekler de görüyorum. Bunu iddia etme yollarına baktın mı? – Melina

+0

evet, sizin için ne istediğinizi iddialarla ilgisi yok ... [oku] [http://blogs.msdn.com/b/webdev/archive/2013/10/16/customizing-profile-information -in-asp-net-kimlik-in-vs-2013-templates.aspx) .. şeyleri aşırı yapmak için bir neden yoktur – dima

+0

Bu iddia olarak kimliğini göstermek için nasıl olsun? Bu kullanıcı için talep tablolarına eklemek için başka bir işleme ihtiyacım var mı? – Sinaesthetic

3

Bu yazı bir kaç yaşında olduğunun farkındayım, ama benzer bir soru sahip burada bitti ASP.NET Çekirdek kazanıyor çekiş ile yaptıktan sonra 210
var user = new ApplicationUser { UserName = model.Email, Email = model.Email, FirstName = "Jack", LastName = "Daniels" }; 

ilk ve son adları AspNetUsers tabloda sona erecek . Kabul edilen cevap, bu verileri yakalamak için kullanıcı veri modelinizi güncellemenizi önerir. Bunun kötü bir öneri olduğunu düşünmüyorum, fakat araştırmalarımdan bu verileri saklamanın doğru yolu. Bakınız What is the claims in ASP .NET Identity ve User.Identity.Name full name mvc5. İkincisi, Microsoft'taki ASP.NET Kimlik ekibinden biri tarafından yanıtlanmaktadır. İşte

basit kod örneği ASP.NET Kimlik kullanarak bu iddiaları eklemek nasıl gösteriyor:

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

var addClaimsResult = await _userManager.AddClaimsAsync(user, claimsToAdd); 
İlgili konular