[Solucionado]Manejo de Sesiones en C# Form

Iniciado por .:Snifer:., 19 Enero 2011, 21:29 PM

0 Miembros y 1 Visitante están viendo este tema.

.:Snifer:.

Hola como estan queria hacer una consulta acerca del manejo de sesiones en C#, estoy haciendo un sistema, con consultas atribuidas ahora mi pregunta es cmo llego a hacer el manejo de sesiones.

tengo la tabla con 3 datos nombre, contraseña, ID.

Id= Seria el identificador para otorgar el permiso.

Porfavor alguna guia para que pueda ubicarme gracias.

[D4N93R]


.:Snifer:.

 ;D q tonto que fui windows.. es amigo.

[D4N93R]

Ah ok,

Bueno, crea alguna clase estática en donde tengas los datos de la sesión actual, y algunos métodos para manejar todo.

Es una buena vía.

Un saludo.

.:Snifer:.

Si estaba viendo la manera de hacerlo con la base de datos otorgando permisos directamente..

Es mas factible?

Saludos :P

Pablo Videla

Yo lo que he hecho es muy simple, hice un login y si el login era correcto me habría otro form con todas las opciones que quieras xD sino, simplemente no hacia nada, y si tenia una X cantidad de errores entonces me cerraba el programa por completo... no se si es lo que buscas xd , saludos.

.:Snifer:.

Bueno eso de hacerlo en el form si lo hice es mas facil xD

user=admin & pass=123

En el mismo formulario lo que ando viendo es como hacerlo con la BD.

Saludos :P

[D4N93R]

Les explico lo que comunmente se hace:

1) Formulario de login
2) Validas los valores normalmente contra una base de datos
3) Si son correctos, no solo abres una ventana o das acceso, sino que además:
4) Guardas un log para las auditorías.
5) Almacenas en memoria al menos el ID del usuario, para la hora de realizar alguna operación que la requieras no estar haciendo consultas a la Base de Datos, sino simplemente sacarlo de la una propiedad, por ejemplo.

Creo que no se me olvida más nada.

Un saludo!

.:Snifer:.

#8
Bueno chicos gracias por las ideas... y soluciones lo pude solucionar.
Buscando un poco entre los codigos que tengo guardados, en mi Wiki ...

Segun el dato que tengo es del 2006 pero aun funciona acabo de hacer la prueba, autor mig16 segun los datos

Código (csharp) [Seleccionar]


using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
using System.Data.SqlClient;

namespace LoginFC
{
   public static class LoginFC
   {
       public static bool Login(string user, string password, string tabla,string tablaLogin, string tablaPassword)
       {
           //Creamos una instancia de conexion (cambien sus datos obviamente)
           SqlConnection con = new SqlConnection("Server = (local); Database = Facturacion;User = sa; Password = 123456");
           bool correct = false; //Este bolleano nos indicara si el login es correcto
           MD5CryptoServiceProvider encriptador = new MD5CryptoServiceProvider(); /*nstancia de
           encriptador en MD5*/
           byte[] bs = Encoding.UTF8.GetBytes(password); //obtenemos los bytes del password
           bs = encriptador.ComputeHash(bs);//los ciframos
           string passHash = null; //Este sera el hash md5 del password
           foreach (byte b in bs) //por cada byte lo agregamos al string passHash
           {
               passHash += b.ToString("x2").ToLower();
           }
           password = passHash; //ya tenemos el password cifrado
           //este es el string que usaremos para el query de la base de datos
           string query = "select " + tablaLogin + ", " + tablaPassword + " from "+tabla+" where " + tablaLogin + " = '" + user + "'";
           con.Open(); //Abrimos la conexion
           SqlCommand cmd = new SqlCommand(query,con); //Creamos un comando de SQL
           SqlDataReader rdr = cmd.ExecuteReader(); //Creamos un reader y ejecutamos el comando
           while (rdr.Read())
           {
               string log = rdr.GetValue(0).ToString();
               string pass = rdr.GetValue(1).ToString();
               if (user == log && password == pass) //si el login y password es = entonces es correcto
               {
                   correct = true;
                   break; //rompemos el ciclo while
               }
           }
           return correct; //regresamos el resultado
       }
   }
}


Algo para salir del apuro pero sirve, por ahora.



Saludos :P