asp.net - tutorial - membership asp net visual studio 2015
¿Cómo se puede cambiar una contraseña hash utilizando el proveedor de membresía asp.net si no conoce la contraseña actual? (2)
Problema, no hay un método:
bool ChangePassword(string newPassword);
Debe conocer la contraseña actual (que probablemente se haya olvidado y olvidado).
Este es uno fácil en el que perdí demasiado tiempo. Esperemos que este mensaje le ahorre a otra persona el dolor de golpearse la frente tan duro como yo.
Solución, restablezca la contraseña aleatoriamente y pase eso al método de cambio.
MembershipUser u = Membership.GetUser();
u.ChangePassword(u.ResetPassword(), "myAwesomePassword");
No puede cambiar la contraseña si requireQuestionAndAnswer = "true"
Tengo el trabajo alrededor para esto
Creó dos proveedores de membresía en web.config
Estoy utilizando el proveedor AspNetSqlMembershipProviderReset para restablecer la contraseña, ya que tiene la requiresQuestionAndAnswer = false donde AspNetSqlMembershipProvider es el proveedor predeterminado utilizado.
Escribí el siguiente código para restablecer la contraseña del usuario.
public bool ResetUserPassword (String psUserName, String psNewPassword) {try {// Obtener detalles de usuario de membresía utilizando el proveedor de membresía secound con la respuesta de pregunta requerida establecida en falso.
MembershipUser currentUser = Membership.Providers["AspNetSqlMembershipProviderReset"].GetUser(psUserName,false);
//Reset the user password.
String vsResetPassword = currentUser.ResetPassword();
//Change the User password with the required password
currentUser.ChangePassword(vsResetPassword, psNewPassword);
//Changed the comments to to force the user to change the password on next login attempt
currentUser.Comment = "CHANGEPASS";
//Check if the user is locked out and if yes unlock the user
if (currentUser.IsLockedOut == true)
{
currentUser.UnlockUser();
}
Membership.Providers["AspNetSqlMembershipProviderReset"].UpdateUser(currentUser); return true;
}
catch (Exception ex)
{
throw ex;
return false;
}
}