Identity 2.0 Reset password by Admin

8.1k Views Asked by At

How can I reset password as a admin for other users?

I have tried using the code below

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

when stepping through GeneratePasswordResetTokenAsync, the dispose method of the controller is called.

Can someone please enlighten me?

2

There are 2 best solutions below

0
Hao Kung On BEST ANSWER

You can also extend UserManager and expose an explicit AdminChangePassword API that doesn't require any information. Something like this in ApplicationUserManager which extends UserManager should work:

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

I should have searched more before posting question here.

Apparently I need to wire up UserTokenProvider with a DataProtectorTokenProvider.

However I do not understand what's a DataProtector for, would be glad if someone can explain here.

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

Answer is found here