Publicado en C# - Csharp, Programacion, Tutoriales

C#: Autenticar Usuario con Formularios y Base de Datos

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

TYDW.-

indice de empresas chilenas

14 comentarios sobre “C#: Autenticar Usuario con Formularios y Base de Datos

  1. oye una pregunta… seria lo mismo si utilizo el Response.Redirect()?… esque en mi logueo depende el tipo de usuario que es, y con esa facultad es que lo redirecciono a su pagina de index… porque el problema esta en que si uso el FormsAuthenticate me redireccionaria a una pagina preestablecida y no a la que realmente necesito ir

  2. yo lo uso asi (si el usuario consulta una pagina cualquiera)

    Response.Redirect(FormsAuthentication.GetRedirectUrl(Me.Login1.UserName, Login1.RememberMeSet))

    esto lo envia a la pagina que consulto

    no lo he probado con una pagina directa pero no debiera ser distinto.

    atte.

  3. esta muy bien tu explicacion pero mi proyecto lo esto haciendo en expression web me puedes pasar el codigo html que se utilizaria porfavor

  4. holoa, esta bueno. pero tendras un ejemplo para una base datos sql Server 2005 y ademas.. lo que me gustaria saber es que el login me redireccione a la carpeta de un usuario y carge sus datos de us sessión. pq siempre direcciona a una sola carpeta restringida.. saludos

  5. Hola, bueno el tuto pero tengo una duda, si la aplicacion tiene paginas publicas y privadas como hago para que cuando denege el acceso a todos los usuarios en el archivo config estos puedan ver las paginas publicas sin necesidad de autenticarse? osea que la autenticacion sea cuando quieran ver una pagina privada.

  6. Por casualidad tienes un ejemplo de como hacer un formulario así como si fuera una factura donde lleve un encabezado y se le agreguen items. Todo esto hacerlo en una pagina asp.net

Deja un comentario