viernes, 10 de julio de 2009

Hacer un control de usuarios en ASP.NET

Para empezar de debe realizar un Login.... Asi

puede insertar este código



Por favor escriba nombre usuario y contrase¤a para ingresar al sistema

BorderColor="Silver" BorderStyle="Solid" BorderWidth="1px">












Nombre usuario:

runat="server" Width="80%" />
ID="UsernameRequiredValidator" runat="server"
ErrorMessage="*" ControlToValidate="UsernameText" />


ID="UsernameValidator" runat="server"
ControlToValidate="UsernameText"
ErrorMessage="Invalido nombre usuario"
ValidationExpression="[\w ]*" />

Contrase¤a:

Width="80%" TextMode="Password" />
runat="server" ErrorMessage="*"
ControlToValidate="PasswordText" />


runat="server" ControlToValidate="PasswordText"
ErrorMessage="Invalido contrase¤a"
ValidationExpression='[\w !"õ$%&/()=\-?\*]*' />



OnClick="LoginAction_Click" Text="Login" />

EnableViewState="false" Text="" />




Luego de insertar este código construirá objetos que le ayudarán a controlar un login.

Ahora, Si usa una base de datos en sql o mysql u otro gestor de base de datos, debe tomar en cuenta la forma de hacer esa conexion...

Bien ahora puede hacer la consulta de la siguiente forma con la obtencion de los nombres y contraseña que inserte el usuario y validarlo

en los webform se crean clases de los form. Digamos Login.aspx.cs o Login.aspx.vb , ese archivo pondrán en el medo del boton...

private void btnLogin_Click_(object sender, Evend....)
{
LoginCs loginacceso = new LoginCs();
/*esta funcion manda los datos a una clase llamada LoginCS datos del login al metodo DatosAcceso, decalrada como publica */
loginacceso.DatosAcceso(txtNombreUser.Tex.Trim(),txtClaveUser.Tex.Trim());
/* se crea una variable de tipo bool para seber la respuesta si hubo un usuario con ese nombre*/
bool Resp;
Resp=loginacceso.Respuesta_Usuario();
/*comparara el si la respuesta fue verdadera*/
if(Resp!=false)
{
/*ora recibira el valor de tipo permiso que tiene el usuario y almacenar en un clase de asp
llamada Session*/
Session["Permiso"]=loginacceso.Tipo_Usuario();
}
else
{
/*aqui puedes introducir el resultado de que no exista usuario como un label*/
this.Laber1.Tex="No existe usuario";
}
......
Digamos que en cierta página quieres que cierto usuario con cierto permiso pueda verlo

entonces pones esto en el medo...

private void Page_Init(object sender, Event...)
{
if(Session["Permiso] != null)
{
if(Session["Permiso"].Equals(sessionusuario.Session))
{
/*permitira que el usuario pueda ver la pagina*/
}
else
{
/*puedes introducir un switch que valide el permiso que tiene y redireccionar al usuario a cierta página*/
}
}
}
}
......................

Ahora Crea la clase llamada

LoginCs y luego introduce esto....

private string User;
private string Password;
private int Permiso_Usuario;
private bool Resp;
/*controlara la session recivida*/
private static object TipoSession;

public LoginCS()
{
this.User=String.Empty;
this.Password=String.Empty;
this.Permiso_Usuario=0;
this.Resp=false;

TipoSession=Session;
}

public void DatosAcceso(string User,string Password)
{
this.User=User;
this.Password=Password;
}

public void AccesoDatos()
{
/*aqui haces tu conexion de datos*/

cmdConsulta = "select Permiso where User=@User and Password= @Password";
SqlParameter pNombre = new SqlParameter("@User", SqlDbType.VarChar);
SqlParameter pContrasenia = new SqlParameter("@Password", SqlDbType.VarChar);
consulta = new SqlCommand(cmdConsulta, "conexion");
consulta.Parameters.Add(pNombre);
consulta.Parameters.Add(pContrasenia);
consulta.Parameters["@Nombre"].Value = this.User.ToString();
consulta.Parameters["@Contrasenia"].Value = this.Password.ToString();
try
{
consulta.Connection.Open();
this.Permiso_Usuario=Convert.ToInt32( consulta.ExecuteScalar());
if(this.Permiso_Usuario!=o)
{
this.Resp=true;
}
}
/*aqui es sale algo mal de guarda en un string
pero es una obcion lo puedes quitar lo que es el try y catch y finally pero sin quitar lo condigos que se encuentran ahi de try y finaly*/
catch(SqlException ex)
{
this.errorsql = ex.Message.ToString();
}
finally
{
consulta.Connection.Close();
}
}
/*luego la clase de retorno de valores*/

public bool Respuesta_Usuario()
{
return this.Resp;
}
public int Tipo_Usuario()
{
return this.Permiso_Usuario;
}

/*alamcena la session de tipo usuario*/
public object Session
{
get { return TipoSession; }
set { TipoSession = value; }
}
..........................

Y es asi como se haria un buen login con tu propia base de datos y con tus propio roles.

Cualquier duda este es mi correo JMikeCU@gmail.com, respondere con sus dudas con mucho gusto

No hay comentarios: