Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Contraseña
En este artículo, voy a demostrar cómo cambiar la configuración de identificación de
seguridad en ASP.NET que viene con la plantilla MVC por defecto utilizando un simple
nombre de usuario en lugar del correo electrónico.
Cambiando el LoginViewModel
Modificar el modelo “AccountViewModels.cs” ubicado en la carpeta “Models” de nuestro
proyecto.
Aquí, es necesario cambiar la propiedad Email por Username y también eliminar el atributo
[EmailAddress], de lo contrario nuestra vista esperará un correo electrónico en lugar de un
nombre de usuario. Concretando, al final debemos tener algo como esto:
[Required]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[Display(Name = "Recuerdame")]
public bool RememberMe { get; set; }
}
Cambiando el RegisterViewModel
También tenemos que cambiar el modelo de la vista del registro. Aquí no borraremos nada,
pero tendremos que añadir una nueva propiedad llamada UserName, el resultado debería
ser algo así:
[Required]
[Display(Name = "Usuario")]
public string UserName { get; set; }
[Required]
[StringLength(100, ErrorMessage =
"El {0} debe contener al menos {2} caracteres.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirmar password")]
[Compare("Password", ErrorMessage =
"El password y la confirmacion del password no coinciden.")]
public string ConfirmPassword { get; set; }
}
Cambiando el ForgotPasswordViewModel
También necesitamos cambiar el modelo de la vista de Olvidó su contraseña y cambiarlo
por UserName, ya que si se echa un vistazo a la acción ForgotPassword en el controlador
del Account, se ve que utiliza el correo electrónico para encontrar al usuario. Tendremos
campos diferentes para el nombre de usuario y para el correo ahora, lo que obtendremos
finalmente es:
Cambiando el ResetPasswordViewModel
Tenemos que hacer lo mismo que antes para la vista del reseteo de contraseñas también,
el motivo es el mismo que el caso de olvidé mi contraseña. Nuestra vista modelo debería
tener este aspecto:
[Required]
[StringLength(100, ErrorMessage =
"La {0} debe contener al menos {2} caracteres.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirmar password")]
[Compare("Password", ErrorMessage =
"El password y la confirmacion del password no coinciden.")]
public string ConfirmPassword { get; set; }
public string Code { get; set; }
}
Tan sólo hay que cambiar una línea aquí, la línea que pasa el email para
PasswordSignInAsync. Tenemos que cambiar el correo electrónico por el nombre de
usuario, así:
Eso es todo lo que necesitamos hacer para cambiar la plantilla predeterminada MVC y
utilizar el UserName en lugar del Email.