Antes de comenzar: ¿Que es ASP.NET Identity?
ASP.NET Identity es una de las grandes novedades de la nueva
versión de ese gran paraguas de soluciones llamado ASP.NET, sustituyendo al viejo y querido sistema de Membership que
venimos usando desde que salio allá por el año 2005. Esta diseñado para dar solución a muchos de los problemas y
limitaciones que el sistema anterior tenia. Si quieren tener un análisis detallado del nuevo sistema,
les recomiendo leer este post http://brockallen.com/2013/10/20/the-good-the-bad-and-the-ugly-of-asp-net-identity/
(Nota: no esta actualizado por lo que algún item mencionado como desventaja ya no aplica porque fue implementado en la ultima versión)
Presentado el tema, pasemos al problema.
La plantilla de Visual Studio 2013, viene con una pagina de
OlvidoSuContraseña y otra RestablecerContraseña que te permiten realizar dichas
tareas.
Al entrar a la página de restablecimiento de contraseña, le vuelve a solicitar al usuario la dirección de mail! Evidentemente el que hizo esta
plantilla, no tuvo en cuenta que ésto no es muy práctico desde el punto de vista usabilidad.
La idea para solucionar esto, es obtener del token el id de
usuario que forma parte del mismo y a partir del mismo, obtener su dirección de
mail y no tener que pedírselo de nuevo al usuario.
Manos a la obra!
1) Ubicar el archivo Startup.auth.cs ubicado en la carpeta App_Start y agregar las lineas de código que se muestran a continuación:
2) Ubicar el archivo ResetPassword.aspx ubicado en la carpeta Account y agregar las lineas de código que se muestran a continuación:
La magia la hace el método GetUserFromToken que utiliza el provider que definimos en el primer paso (ResetPasswordProtectionProvider).
Si querés saber mas acerca de Asp.Net Identity: http://www.asp.net/identity
Espero que les sea de utilidad, hasta la próxima!