2014-05-21 4 views
6

다른 사용자의 비밀번호를 어떻게 재설정 할 수 있습니까? I는 GeneratePasswordResetTokenAsync 단계별 때Identity 2.0 관리자가 비밀번호 재설정

var code = await UserManager.GeneratePasswordResetTokenAsync(user.Id); 
var result = await UserManager.ResetPasswordAsync(user.Id, code, vm.NewPassword); 

아래의 코드를 사용하여 시도

는 컨트롤러의 처분 방법은 호출된다.

나를 계몽 할 수 있습니까?

+0

어떤 mvc 버전입니까? –

+0

mvc 5.1, 태그를 업데이트했습니다. 덕분에 –

답변

-1

여기에 질문을 게시하기 전에 더 많이 검색해야합니다.

분명히 DataProtectorTokenProvider를 사용하여 UserTokenProvider를 연결해야합니다.

그러나 나는 DataProtector가 무엇인지 이해하지 못합니다. 누군가 설명 할 수 있다면 기쁠 것입니다.

var dataProtectionProvider = options.DataProtectionProvider; 
if (dataProtectionProvider != null) 
{ 
    manager.UserTokenProvider = new DataProtectorTokenProvider<MyUser>(dataProtectionProvider.Create("ASP.NET Identity")); 
} 

대답은 here

+0

'options'은 무엇을 참조합니까? – Colum

+0

' public static ApplicationUserManager Create (IdentityFactoryOptions 옵션, IOwinContext 컨텍스트) { var manager = 새 ApplicationUserManager (새 UserStore <응용 프로그램 사용자> (context.Get ())); var dataProtectionProvider = options.DataProtectionProvider; 경우 (dataProtectionProvider = 널!) { manager.UserTokenProvider = 새로운 DataProtectorTokenProvider (dataProtectionProvider.Create ("ASP.NET 정체성")); } 반송 관리자; } ' – DotNetGeek

7

당신은 또한 UserManager를 확장하고 정보를 필요로하지 않습니다 명시 적 AdminChangePassword API를 노출 할 수 있습니다 발견된다. UserManager를 확장 한 ApplicationUserManager에서 다음과 같이 작동해야합니다.

public IdentityResult ChangePasswordAdmin(string userId, string newPassword) { 
    var user = FindById(userId); 
    // validate password using PasswordValidator.Validate 
    user.PasswordHash = PasswordHasher.HashPassword(newPassword); 
    Update(user); 
}