Está en la página 1de 4

Requisitos

En la lista siguiente se describe el hardware, el software, la infraestructura de red y los Service Pack recomendados que necesitar: Microsoft Visual Studio .NET Microsoft SQL Server Servicios de Microsoft Internet Information Server (IIS) 5.0 o posterior

Crear una aplicacin ASP.NET utilizando Visual Basic .NET


1. Abra Visual Studio .NET. 2. Cree una nueva aplicacin Web ASP.NET, y especifique el nombre y la ubicacin.

Configurar la seguridad en el archivo Web.config


En esta seccin se muestra cmo agregar y modificar las secciones de configuracin <authentication> y <authorization>para configurar la aplicacin ASP.NET de manera que utilice autenticacin basada en formularios. 1. En el Explorador de soluciones, abra el archivo Web.config. 2. Cambie el modo de autenticacin a Forms. 3. Inserte la etiqueta <Forms> y rellene los atributos adecuados. (Para obtener ms informacin acerca de estos atributos, consulte la documentacin de MSDN o la documentacin del Tutorial rpido que se muestra en la seccinREFERENCIAS.) Copie el cdigo siguiente y haga clic en Pegar como HTML en el men Edicin para pegar el cdigo en la seccin <authentication> del archivo: <authentication mode="Forms"> <forms name=".ASPXFORMSDEMO" loginUrl="logon.aspx" protection="All" path="/" timeout="30" /> </authentication> 4. Deniegue el acceso al usuario annimo en la seccin <authorization> de la manera siguiente: <authorization> <deny users ="?" /> <allow users = "*" /> </authorization>

Crear una tabla de base de datos de ejemplo para almacenar detalles de los usuarios
En esta seccin se muestra cmo crear una base de datos de ejemplo para almacenar el nombre de usuario, la contrasea y la funcin para los usuarios. Necesitar la columna de funcin si desea almacenar las funciones de usuario en la base de datos e implementar la seguridad basada en funciones. 1. En el men Inicio de Windows, haga clic en Ejecutar y escriba notepad para abrir el Bloc de notas. 2. Resalte el cdigo de secuencia de comandos SQL siguiente, haga clic con el botn secundario del mouse (ratn) en el mismo y, a continuacin, haga clic en Copiar. En el Bloc de notas, haga clic en Pegar en el men Edicin para pegar el cdigo siguiente: if exists (select * from sysobjects where id = object_id(N'[dbo].[Users]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[Users] GO CREATE TABLE [dbo].[Users] ( [uname] [varchar] (15) NOT NULL , [Pwd] [varchar] (25) NOT NULL , [userRole] [varchar] (25) NOT NULL , ) ON [PRIMARY] GO ALTER TABLE [dbo].[Users] WITH

NOCHECK ADD

CONSTRAINT [PK_Users] PRIMARY KEY

NONCLUSTERED

[unam

3. Guarde el archivo como Users.sql. 4. En el equipo con Microsoft SQL Server, abra Users.sql en el Analizador de consultas. En la lista de bases de datos, haga clic en pubs y ejecute la secuencia de comandos. Esto crear una tabla de usuarios de ejemplo y llenar la tabla de la base de datos Pubs que se utilizar con esta aplicacin de ejemplo.

Crear una pgina Logon.aspx


1. Agregue un nuevo formulario Web Forms al proyecto denominado Logon.aspx. 2. Abra la pgina Logon.aspx en el editor y cambie a la vista HTML. 3. Copie el cdigo siguiente y utilice la opcin Pegar como HTML del men Edicin para insertar el cdigo entre las etiquetas <form>: <h3> <font face="Verdana">Logon Page</font> </h3> <table> <tr> <td>Email:</td> <td><input id="txtUserName" type="text" runat="server"></td> <td><ASP:RequiredFieldValidator ControlToValidate="txtUserName" Display="Static" ErrorMessage="*" runat="server" ID="vUserName" /></td> </tr> <tr> <td>Password:</td> <td><input id="txtUserPass" type="password" runat="server"></td> <td><ASP:RequiredFieldValidator ControlToValidate="txtUserPass" Display="Static" ErrorMessage="*" runat="server" ID="vUserPass" /> </td> </tr> <tr> <td>Persistent Cookie:</td> <td><ASP:CheckBox id="chkPersistCookie" runat="server" autopostback="false" /></td> <td></td> </tr> </table> <input type="submit" Value="Logon" runat="server" ID="cmdLogin"><p></p> <asp:Label id="lblMsg" ForeColor="red" Font-Name="Verdana" Font-Size="10" runat="server" /> Este formulario Web Forms se utiliza para presentar un formulario de inicio de sesin a los usuarios, de manera que puedan proporcionar su nombre de usuario y su contrasea para iniciar sesin en la aplicacin. 4. Cambie a la vista Diseo y guarde la pgina.

Codificar el controlador de eventos para que valide las credenciales de usuario


En esta seccin se presenta el cdigo que se coloca en la pgina de cdigo subyacente (Logon.aspx.vb). 1. Abra el archivo Logon.aspx.vb. 2. Importe los espacios de nombres necesarios al archivo de cdigo subyacente: Imports System.Data.SqlClient Imports System.Web.Security 3. Cree una funcin ValidateUser para validar las credenciales de usuario examinando la base de datos. (Asegrese de que cambia la cadena de conexin para sealar a su base de datos.) Private Function ValidateUser(ByVal userName As String, ByVal passWord As String) As Boolean Dim conn As SqlConnection Dim cmd As SqlCommand Dim lookupPassword As String lookupPassword = Nothing ' Check for an invalid userName. ' userName must not be set to nothing and must be between one and 15 characters. If ((userName Is Nothing)) Then System.Diagnostics.Trace.WriteLine("[ValidateUser] Input validation of userName failed.") Return False End If If ((userName.Length = 0) Or (userName.Length > 15)) Then System.Diagnostics.Trace.WriteLine("[ValidateUser] Input validation of

userName failed.") Return False End If ' Check for invalid passWord. ' passWord must not be set to nothing and must be between one and 25 characters. If (passWord Is Nothing) Then System.Diagnostics.Trace.WriteLine("[ValidateUser] Input validation of passWord failed.") Return False End If If ((passWord.Length = 0) Or (passWord.Length > 25)) Then System.Diagnostics.Trace.WriteLine("[ValidateUser] Input validation of passWord failed.") Return False End If Try ' Consult with your SQL Server administrator for an appropriate connection ' string to use to connect to your local SQL Server. conn = New SqlConnection("server=localhost;Integrated Security=SSPI;database=pubs") conn.Open() ' Create SqlCommand to select pwd field from the users table given a supplied userName. cmd = New SqlCommand("Select pwd from users where uname=@userName", conn) cmd.Parameters.Add("@userName", SqlDbType.VarChar, 25) cmd.Parameters("@userName").Value = userName ' Execute command and fetch pwd field into lookupPassword string. lookupPassword = cmd.ExecuteScalar() ' Cleanup command and connection objects. cmd.Dispose() conn.Dispose() Catch ex As Exception ' Add error handling here for debugging. ' This error message should not be sent back to the caller. System.Diagnostics.Trace.WriteLine("[ValidateUser] Exception " & ex.Message) End Try ' If no password found, return false. If (lookupPassword Is Nothing) Then ' You could write failed login attempts here to the event log for additional security. Return False End If ' Compare lookupPassword and input passWord by using a case-sensitive comparison. Return (String.Compare(lookupPassword, passWord, False) = 0) End Function 4. Puede utilizar uno de dos mtodos posibles para generar la cookie de autenticacin de formularios y redirigir al usuario a una pgina apropiada en el evento cmdLogin_ServerClick. Se proporciona el cdigo de ejemplo para ambos escenarios. Utilice cualquiera de ellos segn sea necesario. o Llame al mtodo RedirectFromLoginPage para generar automticamente la cookie de autenticacin de formularios y redirigir al usuario a una pgina apropiada en el evento cmdLogin_ServerClick: Private Sub cmdLogin_ServerClick(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles cmdLogin.ServerClick If ValidateUser(txtUserName.Value,txtUserPass.value) Then FormsAuthentication.RedirectFromLoginPage(txtUserName.Value, _ chkPersistCookie.Checked) Else Response.Redirect("logon.aspx", True) End If End Sub o Genere el vale de autenticacin, cfrelo, cree una cookie, agrguela a la respuesta y redirija al usuario. Esto le ofrece ms control sobre cmo crear la cookie. Tambin puede incluir datos personalizados junto conFormsAuthenticationTicket en este caso. Private Sub cmdLogin_ServerClick(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles cmdLogin.ServerClick If Validateuser(txtUserName.Value,txtUserPass.Value) Then Dim tkt As FormsAuthenticationTicket Dim cookiestr As String Dim ck As HttpCookie tkt = New FormsAuthenticationTicket(1, txtUserName.Value, DateTime.Now(), _ dateTime.Now.AddMinutes(30), chkPersistCookie.Checked, "your custom data") cookiestr = FormsAuthentication.Encrypt(tkt) ck = new

HttpCookie(FormsAuthentication.FormsCookieName(), cookiestr) if (chkPersistCookie.Checked) then ck.Expires=tkt.Expiration ck.Path = FormsAuthentication.FormsCookiePath() Response.Cookies.Add(ck) Dim strRedirect As String strRedirect = Request("ReturnURL") If strRedirect <> "" Then Response.Redirect(strRedirect, True) Else strRedirect = "default.aspx" Response.Redirect(strRedirect, True) End If Else Response.Redirect("logon.aspx", True) End If End Sub

Crear una pgina Default.aspx


En esta seccin se crea una pgina de prueba a la que se redirige a los usuarios despus de autenticarse. Si los usuarios van a esta pgina sin iniciar sesin primero en la aplicacin, se les redirige a la pgina de inicio de sesin. 1. Cambie el nombre de la pgina WebForm1.aspx existente como Default.aspx y brala en el editor. 2. Cambie a la vista HTML y copie el cdigo siguiente entre las etiquetas <form>: <input type="submit" Value="SignOut" runat="server" id="cmdSignOut"> Este botn se utiliza para cerrar la sesin de autenticacin de formularios. 3. Cambie a la vista Diseo y guarde la pgina. 4. Importe los espacios de nombres necesarios al archivo de cdigo subyacente: Imports System.Web.Security 5. Abra la pgina de cdigo subyacente (Default.aspx.vb) y copie el cdigo siguiente al controlador de eventoscmdSignOut_ServerClick: Private Sub cmdSignOut_ServerClick(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles cmdSignOut.ServerClick FormsAuthentication.SignOut() Response.Redirect("logon.aspx", True) End Sub 6. Guarde y compile el proyecto. Ahora puede utilizar la aplicacin.

También podría gustarte