Está en la página 1de 13

Como hacer Login mediante una base de datos a nivel de cdigo, en Aplicaciones WEB con ASP.

NET
Posted: diciembre 3, 2008 in Categoria All

12

Buen da a todos espero se encuentren muy bien.

Hace poco me escribieron un comentario sobre lo interesante que les pareci en postear un articulo sobre seguridad en aplicaciones web, de hecho me comentaron que queran hacer Login a una base de datos independiente, es decir, desde Cero bueno a continuacin les presento de manera detallada como deben hacer para lograr los resultados. Siempre tomanto en cuenta la seguridad. POR FAVOR ZOOM A LA PAGINA PARA QUE PUEDAN VISUALIZAR MEJOR LAS IMAGENES.

Paso 1.
Acostumbro a trabajar con procedimientos almacenados, por eso de trabajar o hacer consultas a mi base de datos mediante parmetros. Abro el SQLSERVER 2005 EXPRESS EDITION, y comienzo a crear mi base de datos con sus respectivas tablas.

Crearemos una tabla que se llame usuario

Campos:

id VarChar (50), nombre VarChar (50)

Nos posicionamos encima de tablas (botn derecho) crear nueva tabla

Paso 2.
Comenzamos a llenar la tabla y posteriormente creamos nuestro Stored Procedure. Importante saber algo, QUE ES UN PROCEDIMIENTO ALMACENADO??

Es un programa que reside en un proveedor de datos, estos se ejecutan directamente en el motor, logrando eficiencia en el proceso. y deshacindose de la sobrecarga resultante de comunicar grandes cantidades de datos salientes y entrantes. Internamente poseen cdigo T-SQL.

Procedimiento Almacenado:

Al crear el SP, se hace clic en

para que se cree el procedimiento y se agregue al

directorio. Si todo esta bien, entonces el resultado seria: Comandos completados correctamente.

Si la imagen no se ve muy bien entonces aqu esta el cdigo.

set ANSI_NULLS ON set QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[loginusuario](@identificacion as varchar(50),@nombreusuario as varchar(50)) AS BEGIN Select id,nombre from dbo.usuario where id=@identificacion and nombre=@nombreusuario END

Para ver si todo esta bien solo necesitamos es probar el SP:

Botn Derecho encima del SP/ ejecutar Procedimiento almacenado.

Clic en Aceptar y si todo esta bien, aparecer el registro que estamos buscando. As:

Listo!!! nos olvidamos de SQL : )

Paso 3.
Nos vamos a Visual Studio, y comenzamos a colocar nuestro controles, para darle el aspecto del Login del usuario y validar su entrada.

En este paso, lo que voy hacer es colocar:

2 Cuadros de Texto

1 Botn

1 Label (esto es a que solo voy a probar que verdaderamente el usuario existe)

Un ejemplo seria: Es que al validar el usuario me envi a una pagina de solo para miembros como el post pasado. Recuerdas?? Espero que si

Bueno manos a la obra:

a mi sitio lo he llamado WebSiteBlog:

Ahora la idea es la siguiente:

Crear importaciones hacia mi proveedor, y trabajar con el procedimiento almacenado antes creado.

Paso 4.
Codificar: Doble Clic en el botn y lo primero que hacemos es trabar con las importaciones (Imports)

Dentro del botn escribimos lo siguiente.

Como estamos trabajando con seguridad, la idea es colocar dentro del web.config la cadena de conexin, dentro de los tabs

<connectionStrings>

Aqu </connectionStrings>

Dando como resultado esto:

<connectionStrings> <add name="conexion" connectionString="Data Source=(local)\sqlexpress; initial catalog=DemostracionLogin; integrated security=true" providerName="System.Data.SqlClient"/> </connectionStrings>

Guardamos los cambios

Noten que he colocando el add name= conexin es un nombre cualquiera que le he colocado, puedes colocarle el que desees. La idea es identificar tu conexin.

DemostracionLogin: Es el nombre de la base de datos

Listo!!! nos devolvemos a nuestro Default.aspx.vb para seguir codificando la aplicacin.

Nota: Como vamos a trabajar con el archivo de configuracin, debemos agregar otro Imports. As:

A.- Hora nos comunicamos con el web.config (cadena de conexin).

Dim conectar As String = ConfigurationManager.ConnectionStrings("conexion").ConnectionString

Noten que hay entre parntesis el nombre conexin , estamos haciendo referencia a el nombre de mi cadena que se encuentra en el web.config

Continuando con el cdigo,

B.- Declaramos una variable de tipo SQLConexin y le pasamos la conexin de tipo String antes creada.

Dim sqlconectar As SqlConnection = New SqlConnection(conectar)

C.- Luego creamos una variable de tipo SqlCommand y le pasamos los parmetros que son:

1.

El nombre del procedimiento almacenado

2.

la conexin de tipo SQLConexin Dim cmd As SqlCommand = New SqlCommand("loginusuario", sqlconectar)

"loginusuario": Nombre del procedimiento almacenado.

D.- Debemos indicarle a la variable de tipo SqlCommand que la consulta hacer ser hacia un procedimiento almacenado.

cmd.CommandType = CommandType.StoredProcedure

E.- Abrimos Conexin.

cmd.Connection.Open()

F.- Ahora debemos indicar que cuales son los parmetros que debemos pasarle, al procedimiento almacenado y que estos valores vendrn a partir de la introduccin de los datos en los cuadros de textos.

cmd.Parameters.Add("@identificacion", SqlDbType.VarChar, 50).Value = txtid.Text

cmd.Parameters.Add("@nombreusuario", SqlDbType.VarChar, 50).Value = txtnombre.Text

G.- Una vez hecho lo anterior, pasamos a recorrer esos datos con el mtodo ExecuteReader para que finalmente verifique si verdaderamente el usuario con sus respectivos datos existe. Para capturar erres en caso que existan, es recomendable trabajar con bloques de excepciones.

Declaramos una variable de tipo SqlDataReader

Try

Dim dr As SqlDataReader = cmd.ExecuteReader

Catch ex As Exception

End Try

H.- Partimos de una condicin, si los datos pasados son verdaderos, entonces, mustrame un mensajes que diga Bienvenidos Usuario, en caso contrario, El usuario no existe

If dr.Read Then

lblresult.Text = "Bienvenidos Usuario" & " " & txtnombre.Text

Else lblresult.Text = "El Usuario no Existe"

End If

I.- En caso de alguna anomala, conexin entre otros capturamos el error producido con:

Catch ex As Exception lblresult.Text = ex.Message End Try

Y Cerramos conexin:

cmd.Connection.Close()

EL RESULTADO ESPERADO ES:

Cdigo Completo:

Ejecucin.

1.=

7 caracteres como aparece almacenado en la bd campo id

2.=

Adicionalmente, si al validar al usuario colocamos esta lnea

FormsAuthentication.RedirectFromLoginPage(txtnombre.Text, False)

Podemos hacer que se dirija a una pagina solo para aquellos que se han autenticado.

Prueben de esta forma:

1.

Cambia el nombre que de la actual pagina, colcale Login.aspx Agrega un nuevo elemento WebForm que se llame Default.aspx Listo!!! Prueba para que veas lo que hace.

2.