Está en la página 1de 6

Como implementar la autenticacin en formularios a) Crear una aplicacin ASP.NET utilizando C#.NET 1.-Abra visual studio.net 2.

-Cree un aplicacin web asp.net y especifique el nombre de ubicacin b) configurar la seguridad del archivo web.config En esta seccin se describe como agregar y modificar las secciones de configuracin de autenticacin y autorizacin. Para configurar la autenticacin.net utiliza autenticacin basada en formularios. 1.-En el explorador de soluciones abra el archivo web.config 2.-Cambie el modo de autenticacin a formularios 3.-Inserte la etiqueta <Forms> y rellene los atributos apropiados. Copie el cdigo que a continuacin se describe y pguelo como HTML en el men edicin en la parte de autentications del archivo. //MODO DE AUTENTICACION <authentication mode = "Forms"> <form name = "ASPXFORMDEMO" loginURL = "Login.aspx" protection = "All path = "/" time out = "30 "/ > </authetication/> 77DENEGAR ACCESO 4.- deniegue el acceso a los usuarios annimos en la seccin <AUTHORIZATION> <deny user = "?"> <allow user= "*"> </authentication> C) Cree una tabla para almacenar los detalles de los usuarios 1.- Abra un bloc de notas 2.-Introdusca el siguiente cdigo de ejemplo Ip exists (select * from) 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 ( [uname] ) ON [PRIMARY] GO

INSERT INTO Users values('user1','user1','Manager') INSERT INTO Users values('user2','user2','Admin') INSERT INTO Users values('user3','user3','User') GO

3.-Almacene el archivo como users.sql 4.-Ejecute el script en SQL server

D) Agregue un nuevo web from al proyecto llamado 1.-Log on.aspx 1.-Abra la pgina en el editor y cambie la vista a HTML 3.-Inserte el siguiente cdigo entre las lneas from

Este formulario web se utiliza para presentar un inicio de sesin Codificar el controlador de eventos para que valide las credenciales de usuario 1.-Abra el archivo Log on .aspx.cs

2.-Importe los espacios de nombres: using System.Data.Sqlclient; System.web.Security; 3.-Cree una funcin <validete user> para validar las credenciales de usuarios con la ayuda de la base de datos private bool ValidateUser( string userName, string passWord ) { SqlConnection conn; SqlCommand cmd; string lookupPassword = null;

// Buscar nombre de usuario no vlido. // el nombre de usuario no debe ser un valor nulo y debe tener entre 1 y 15 caracteres. if ( ( null == userName ) || ( 0 == userName.Length ) || ( userName.Length > 15 ) ) { System.Diagnostics.Trace.WriteLine( "[ValidateUser] Input validation of userName failed." ); return false; }

// Buscar contrasea no vlida. // La contrasea no debe ser un valor nulo y debe tener entre 1 y 25 caracteres. if ( ( null == passWord ) || ( 0 == passWord.Length ) || ( passWord.Length > 25 ) ) { System.Diagnostics.Trace.WriteLine( "[ValidateUser] Input validation of passWord failed." ); return false; }

try { // Consultar con el administrador de SQL Server para obtener una conexin apropiada // cadena que se utiliza para conectarse a su SQL Server local. conn = new Security=SSPI;database=pubs" ); conn.Open(); SqlConnection( "server=localhost;Integrated

// Crear SqlCommand para seleccionar un campo de contrasea desde la tabla de usuarios dado el nombre de usuario proporcionado. cmd = new SqlCommand( "Select pwd from users where uname=@userName", conn ); cmd.Parameters.Add( "@userName", SqlDbType.VarChar, 25 ); cmd.Parameters["@userName"].Value = userName;

// Ejecutar el comando y capturar el campo de contrasea en la cadena lookupPassword. lookupPassword = (string) cmd.ExecuteScalar();

// Comando de limpieza y objetos de conexin. cmd.Dispose(); conn.Dispose(); } catch ( Exception ex ) { // Agregar aqu un control de errores para la depuracin. // Este mensaje de error no debera reenviarse al que realiza la llamada. System.Diagnostics.Trace.WriteLine( "[ValidateUser] Exception " + ex.Message ); }

// Si no se encuentra la contrasea, devuelve false. if ( null == lookupPassword ) { // Para ms seguridad, puede escribir aqu los intentos de inicio de sesin con error para el registro de eventos. return false; }

// Comparar lookupPassword e introduzca passWord, usando una comparacin que distinga maysculas y minsculas. return ( 0 == string.Compare( lookupPassword, passWord, false ) );

4.-cambia a la vista de diseo y guarda la pagina 5.- Puede usar cualquiera de los mtodos para generar la autenticacin de formularios y redirigir al usuario a la pgina apropiada del evento cmd loguin_Serverclick 6.- Asegrese que el cdigo siguiente inicializeComponent This.cmdLoguin.serverclick+=new system. Event thandlax (this.cmdLoguin.serverclick); Crear una pagina default.aspx { if (ValidateUser(txtUserName.Value,txtUserPass.Value) ) { FormsAuthenticationTicket tkt; string cookiestr; HttpCookie ck; 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) ck.Expires=tkt.Expiration; ck.Path = FormsAuthentication.FormsCookiePath; Response.Cookies.Add(ck);

string strRedirect; strRedirect = Request["ReturnUrl"]; if (strRedirect==null) strRedirect = "default.aspx"; Response.Redirect(strRedirect, true); } else Response.Redirect("logon.aspx", true); }