2014-10-22 18 views
6

Ben MyPasswordHaser kullanmayan AccountController/Oturum IdentityConfigÖzel IPasswordHasher nasıl kullanılır?

yılında
manager.PasswordHasher = new MyPasswordHasher(); 

ama var user = await UserManager.FindAsync(model.Email, model.Password); yazmak IPasswordHasher

public class MyPasswordHasher : IPasswordHasher 
{ 
    public string HashPassword(string password) 
    { 
     using (SHA256 mySHA256 = SHA256Managed.Create()) 
     { 
      byte[] hash = mySHA256.ComputeHash(Encoding.UTF8.GetBytes(password.ToString())); 

      StringBuilder hashSB = new StringBuilder(); 
      for (int i = 0; i < hash.Length; i++) 
      { 
       hashSB.Append(hash[i].ToString("x2")); 
      } 
      return hashSB.ToString(); 
     } 
    } 


    public PasswordVerificationResult VerifyHashedPassword(
     string hashedPassword, string providedPassword) 
    { 
     if (hashedPassword == HashPassword(providedPassword)) 
      return PasswordVerificationResult.Success; 
     else 
      return PasswordVerificationResult.Failed; 
    } 
} 

uygular.

Kimlik 2.1'de nasıl kullanabilirim?

Projem https://yadi.sk/d/NUL56SMccCtqd

+0

Hiç bir çözüm buldunuz mu? – cheeesus

+1

Bunu farklı olan Kimlik 3'te çalışıyorum. Bunu Startup.cs dosyasına ekleyin: 'services.AddScoped , MyPasswordHasher >();' – truemedia

cevap

2

Sen UserManager takın zorunda:

public class AppUserManager : UserManager<AppUser, int> 
{ 
    public AppUserManager(AppUserStore a_store) 
     : base(a_store) 
    { 
     _container = a_container; 
     _emailService = _container.GetInstance<IEmailService>(); 

     PasswordHasher = new AppPasswordHasher(); 
    } 
} 
1

Kullanım: UserManager ctor içinde

PasswordHasher = new MyPasswordHasher(); 

!

İlgili konular