Esta es la continuacion del tutorial anterior. En el cual usabamos el web.config, ahora lo haremos contra un abase de datos. Usaremos Visual Studio 2005 mas Framework .NET 2.0. El lenguaje lo cambiaremos a C#.

Crearemos un nuevo sitio web en lenguaje C#. Le agregaremos una pagina que llamaremos login.aspx en el cual le agregaremos el control de Login que trae la Barra de Herramientas.

Los colores y fuente de letras de la caja del Login queda a gusto del programador :), como lo mencionamos en el tutorial anterior.

Luego abriremos nuestro archivo web.config y agregaremos el siguiente codigo que le indicara a nuestro sitio web que todas las paginas necesitaran auntentificarse antes ser accesadas.

<authentication mode=”Forms”>
<forms name=”miFormulario” loginUrl=”login.aspx” protection=”All” path=”/” timeout=”30″ />
</authentication>
<authorization>
<deny users =”?” />
<allow users = “*” />
</authorization>

Ahora iremos con la pagina logina.spx. En el evento “Login1_Authenticate” agregaremos este codigo:

protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
{
if (ValidateUser(Login1.UserName, Login1.Password))
{
FormsAuthentication.RedirectFromLoginPage(Login1.UserName, Login1.RememberMeSet );
}

}

Aqui dejamos la entrada del usuario dependiendo de una funcion creada por nosotros (ValidateUser). La cual validara el usuario y contraseña contra una base de datos. Como sera ORACLE, debemos agregar la referencia del cliente de  .NET para esta base.

Se tiene que agregar la llamada a la libreria al inicio de la pagina login.aspx.cs:

System.Data.OracleClient;

El codigo de esta funcion es el que sigue:

private bool ValidateUser(string userName, string passWord)
{
string lookupPassword = null;
string sql = null;

OracleConnection oraConn = new OracleConnection("Data Source=miservidor;User Id=miusuario;Password=mipassword");

sql = "select clave from tabla_usuarios where login = '" + userName + "'";

OracleCommand oraCMD = new OracleCommand(sql, oraConn);

oraConn.Open();

//recuperamos la password de la base
lookupPassword = (string)oraCMD.ExecuteScalar();

oraConn.Close();

//si no hay resultados, se devuelve falso
if (null == lookupPassword)
{
return false;
}

//se compara la password de la base con la digitada, usando case sensitive
return (0 == string.Compare(lookupPassword.Trim(), passWord.Trim(), false));
}

Ahora iremos sobre el codigo CS de la pagina Default.aspx. Vamos a mostrar algunos datos que ya tenemos por el metodo de autenticacion que estan en las credenciales.

protected void Page_Load(object sender, EventArgs e)
{
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
//desplegamos la informacion de las credenciales
Response.Write("Bienvenido : " + User.Identity.Name + "
" + "Tipo de Autentificacion Usada : " + User.Identity.AuthenticationType + "");

}
}

A la pagina default.aspx le agregaremos un boton para salir de la zona de aunteticacion. El boton lo denominaremos SignOut y le asinaremos el sgte. codigo:

protected void cmdSignOut_Click(object sender, EventArgs e)
{
//se borra la cookie de autenticacion
FormsAuthentication.SignOut();

//se redirecciona al usuario a la pagina de login
Response.Redirect(Request.UrlReferrer.ToString());
}

Cuando ejecutemos nuestro sitio web, nos pedira auntenticarnos, al darles los datos correctos de la base de datos veremos la pagina default.aspx, con los datos del usuario.

Hasta la proxima.

Links:
ASP .NET: Autenticar Usuario con Formularios

Soporte Microsoft: Cómo implementar la autenticación basada en formularios en su aplicación ASP.NET mediante C# .NET

About these ads