2014-10-22 2 views
6

나는 MyPasswordHaser를 사용하지 않는 AccountController/로그인에 IdentityConfig어떻게 커스텀 IPasswordHasher를 사용합니까?

manager.PasswordHasher = new MyPasswordHasher(); 

하지만 var user = await UserManager.FindAsync(model.Email, model.Password); 쓰기 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; 
    } 
} 

을 구현합니다.

ID 2.1에서 어떻게 사용할 수 있습니까?

내 프로젝트 https://yadi.sk/d/NUL56SMccCtqd

+0

해결책을 찾았습니까? – cheeesus

+1

다른 ID 3에서이 작업을 수행했습니다. Startup.cs에 다음을 추가합니다. 'services.AddScoped , MyPasswordHasher >();' – truemedia

답변

2

당신은 UserManager에 연결해야합니다 :

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

사용 : UserManager의의 ctor에서

PasswordHasher = new MyPasswordHasher(); 

!

관련 문제