WebApi

1

içinde ApplicationUser İçinde Özel Sınıf Kullanın Benim Projemde Depozit deseni kullanıyorum, ApplicationUser Sınıfı yerine Kendi sınıfım kullanmak istiyorum.WebApi

DbContext Sınıfını buna göre özelleştirdim.

Bu, ApplicationUser yerine kullanmak istediğim sınıfım.

public class AppUser : IdentityUser 
    { 
     public string FirstName { get; set; } 

     public string LastName { get; set; } 

     public string Email { get; set; } 

     public string ConfirmationCode { get; set; } 

     public DateTime ConfirmationCodeSentDate { get; set; } 

     [Key] 
     public int Identifier {get;set;} 

     public DateTime DateCreated { get; set; } 

     public DateTime LastModified {get; set;} 

     public bool IsRemoved { get; set;} 
    } 

Bağlam Sınıfım aşağıdaki gibidir.

public class TestArchDbContext : IdentityDbContext<AppUser> 
    { 
     public TestArchDbContext() 
      : base("TestArchDb") 
     { 

     } 
     public IDbSet<Result> Results { get; set; } 
     public static TestArchDbContext Create()  
     { 
      return new TestArchDbContext(); 
     } 
    } 

Şimdi

AppUser user = await UserManager.FindAsync(new UserLoginInfo(externalLogin.LoginProvider, 
       externalLogin.ProviderKey)); 

ClaimsIdentity oAuthIdentity = await user.GenerateUserIdentityAsync(UserManager, 
        OAuthDefaults.AuthenticationType); 
       ClaimsIdentity cookieIdentity = await user.GenerateUserIdentityAsync(UserManager, 
        CookieAuthenticationDefaults.AuthenticationType); 

Ben APPUSER kimliğine GenerateUserIdentityAsync tanıtarak içermediğini hatası alıyorum AccountController

yılında GetExternalLogin Yöntem kod yoktur.

Bu yöntemi nereye yazmalıyım?

+0

. Bir göz atın kabul edilen bu cevabı (cevabın alt kısmına yakın): http://stackoverflow.com/questions/24428520/identity-2-0-with-custom-tables – Mikanikal

+0

@AmitKumar: Neden sadece kendi varolan 'ApplicationUser' özelliklerine? –

cevap

0

Denetleyicime bir yöntem ekledim ve sorunumu çözdü.

public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<AppUser> manager, AppUser user, string authenticationType) 
     {   
      var userIdentity = await manager.CreateIdentityAsync(user, authenticationType); 
      return userIdentity; 
     } 

Sonra doğrudan diyoruz yerine APPUSER kimliğine nesneden çağıran (bu yöntemi çağırın ve kullanıcı Nesne geçmektedir. Muhtemelen bu işlevselliği uygulamak zorunda olacak

ClaimsIdentity oAuthIdentity = await this.GenerateUserIdentityAsync(UserManager,user, 
        OAuthDefaults.AuthenticationType); 
       ClaimsIdentity cookieIdentity = await GenerateUserIdentityAsync(UserManager,user, 
        CookieAuthenticationDefaults.AuthenticationType);