Vous êtes sur la page 1sur 2

Introduccin

Hace unos das pude asistir al Microsoft Techday 2012 (#estechday). Siempre que puedo asisto a
este tipo de eventos, por que sirven de escaparate para las tecnologas y productos punteros del
momento. Obviamente la empresa organizadora siempre habla de lo estupendo de sus productos.
Pero quitando el proselitismo, te quedas con una muestra tangible de lo que esta "pegando fuerte".
Una de las tecnologas que hasta ahora yo haba obviado y que estuvo presente a pesar de no ser
protagonista fue asp.net MVC. As que unos das ms tarde, me he puesto manos a la obra.
Primeros pasos
Voy a escribir una serie de entradas sobre mi experiencia en MVC, por lo que voy a obviar en esta
los detalles, pero he de mencionar que el modelo bsico de aplicacin es bastante completo en lo
que refiere a ejemplos y casos de uso para un novato como yo.
No obstante, uno de los puntos que ms me ha costado entender, por lo automtico del cdigo, es
la autenticacin. Habitualmente hago pequeas aplicaciones web orientadas a un nmero muy
reducido de usuarios por lo que los sistemas de autenticacin integrados en ASP.net (basados en
asp.net forms, o active directory por ejemplo) resultan excesivamente complejos. As que me
encuentro intentando enfrentar una nueva tecnologa con viejas ideas.
Autenticacin
Tras estudiar bastante el ejemplo base de MVC4 encontr la funcin de autenticacin siguiente:

public ActionResult Login(LoginModel model, string returnUrl)


{
if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password,
persistCookie: model.RememberMe))
{
return RedirectToLocal(returnUrl);
}
// Si llegamos a este punto, es que se ha producido un error y volvemos a
mostrar el formulario
ModelState.AddModelError("", "El nombre de usuario o la contrasea
especificados son incorrectos.");
return View(model);
}

En dicha funcin, se est llamando a WebSecurity.Login(...); que es el mtodo de autenticacin del


SimpleMembershipProvider.
Ahora hay que implementar el procedimiento de autenticacin que necesitamos. Podemos
simplemente editar la funcin anterior sustituyendo las condiciones del if por nuestras condiciones
propias, o reemplazando el mtodo WebSecurity.Login(...); por un mtodo Login(...); que devuelva
true o false con nuestro criterio.
Pero mvc usa (no necesariamente) el estado de autenticacin para mostrar distintas partes de las
pginas con las sentencias @if (Request.IsAuthenticated) {...
Para aprovechar esta funcionalidad, cualquier experto en asp.net podr daros muchas soluciones
muy buenas (sugerencias bienvenidas), pero yo lo he resuelto con esta aproximacin:
He implementado un mtodo Login que sustituye a Websecurity.Login con el siguiente cuerpo:

private bool Login(string User, string Password, bool persistCookie)


{
if (User == "User" && Pass == "Pass") //reemplazar por algo mejor
{
FormsAuthentication.SetAuthCookie(User, persistCookie);
return true;
}
return false;
}

Vous aimerez peut-être aussi