Saltar al contenido

Restablecimiento de contraseña de identidad de ASP.NET

Solución:

¿O cómo puedo restablecer sin conocer el actual (el usuario olvidó la contraseña)?

Si desea cambiar una contraseña usando el UserManager pero no desea proporcionar la contraseña actual del usuario, puede generar un token de restablecimiento de contraseña y luego usarlo inmediatamente en su lugar.

string resetToken = await UserManager.GeneratePasswordResetTokenAsync(model.Id);
IdentityResult passwordChangeResult = await UserManager.ResetPasswordAsync(model.Id, resetToken, model.NewPassword);

En versión actual

Suponiendo que ha manejado la verificación de la solicitud para restablecer la contraseña olvidada, use el siguiente código como pasos de código de muestra.

ApplicationDbContext =new ApplicationDbContext()
String userId = "<YourLogicAssignsRequestedUserId>";
String newPassword = "<PasswordAsTypedByUser>";
ApplicationUser cUser = UserManager.FindById(userId);
String hashedNewPassword = UserManager.PasswordHasher.HashPassword(newPassword);
UserStore<ApplicationUser> store = new UserStore<ApplicationUser>();            
store.SetPasswordHashAsync(cUser, hashedNewPassword);

En AspNet Nightly Build

El marco se actualiza para trabajar con Token para manejar solicitudes como ForgetPassword. Una vez en el lanzamiento, se espera una guía de código simple.

Actualizar:

Esta actualización es solo para proporcionar pasos más claros.

ApplicationDbContext context = new ApplicationDbContext();
UserStore<ApplicationUser> store = new UserStore<ApplicationUser>(context);
UserManager<ApplicationUser> UserManager = new UserManager<ApplicationUser>(store);
String userId = User.Identity.GetUserId();//"<YourLogicAssignsRequestedUserId>";
String newPassword = "[email protected]"; //"<PasswordAsTypedByUser>";
String hashedNewPassword = UserManager.PasswordHasher.HashPassword(newPassword);                    
ApplicationUser cUser = await store.FindByIdAsync(userId);
await store.SetPasswordHashAsync(cUser, hashedNewPassword);
await store.UpdateAsync(cUser);

Obsoleto

Esta fue la respuesta original. Funciona, pero tiene un problema. Y si AddPassword falla? El usuario se queda sin contraseña.

La respuesta original: podemos usar tres líneas de código:

UserManager<IdentityUser> userManager = 
    new UserManager<IdentityUser>(new UserStore<IdentityUser>());

userManager.RemovePassword(userId);

userManager.AddPassword(userId, newPassword);

Véase también: http://msdn.microsoft.com/en-us/library/dn457095(v=vs.111).aspx

Ahora recomendado

Probablemente sea mejor usar la respuesta que propuso EdwardBrey y luego DanielWright elaboró ​​más tarde con una muestra de código.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *