jueves, 9 de octubre de 2014

Obtener el id de usuario desde un token generado por la pagina PasswordReset de ASP.NET Identity 2.1

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. 

El mecanismo para restablecer la contraseña que utilizamos en nuestro caso, es el envío de un link vía mail para restablecer la contraseña (hay que tener en cuenta que hay otras posibilidades)

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 Identityhttp://www.asp.net/identity

Espero que les sea de utilidad, hasta la próxima!


martes, 4 de marzo de 2014

Timeouts de Web Service en carga de archivos grandes

En esta semana hemos tenido la oportunidad de agregar funcionalidad a un web service existente. Dicha funcionalidad consta de subir una lista de fotos desde un celular al servicio web anteriormente mencionado. A continuación, la firma del método en cuestión:


Eventualmente, cada foto subida desde el celular, puede superar el tamaño establecido como límite en un servicio web asp.net (4096KB - 4Mb), por lo que debemos meter mano en la configuración por defecto para aumentar estos límites.

Abrimos el archivo web.config y dentro de la sección  System.Web tenemos el tag HttpRuntime y dentro del mismo, encontramos maxRequestLenght y executionTimeout que son los valores que debemos aumentar dependiendo de nuestras necesidades:
 

Adicionalmente, si vamos a implementar este web service en un servidor con IIS 7 o superior, debemos cambiar el límite mencionado anteriormente en OTRO lugar. El tag en cuestión es maxAllowedContentLength el cual se encuentra dentro del tag requestLimits, que a su vez está dentro de system.webServer


Luego de haber modificado éstos valores, queda todo funcionando OK, verdad?
En nuestro caso no fue así. Debimos aumentar un valor adicional dentro de la configuración de IIS, el cual les paso a detallar:

Primero, vamos a la configuración avanzada del sitio como se muestra en la imagen a continuación:

 
Luego, expandimos la sección límites y cambiamos el valor de "Tiempo de espera de la conexión" y That's it!
 
 
No puedo dejar de darle crédito del último tip, al colega Roberto Broggi encargado de IT en la empresa para la cual implementamos la solución.
 
Espero les sea de utilidad, hasta la próxima!

jueves, 20 de febrero de 2014

AOP & PostSharp

Mi filosofía, es siempre aprender cosas nuevas y divertirme haciéndolo.

Hace poco tiempo, los amigos Fabián Fernandez y Bruno Bologna, organizadores de la .NetMeetupUy, dieron una charla muy interesante de AOP y PostSharp.

Por las vueltas de la profesión, hoy me toca trabajar con esa tecnología, la cual gracias a esa charla, no me resulta una desconocida.

Por lo tanto, me voy a tomar el atrevimiento de darles un consejo a mis colegas y amigos:

Asistan a las charlas técnicas...siempre se adquiere conocimiento que en una de esas van necesitar mas pronto de lo que creen...

Mas informacion de AOP y PostSharp en:

http://www.meetup.com/NET-UY/events/145986872/

http://www.postsharp.net/

http://www.youtube.com/watch?v=mKszBAlTOkg