Hola, estoy creando un formulario de inicio de sesión desde cero en C# utilizando 3 niveles. Logré construir un formulario de trabajo que verifica si los datos del usuario son correctos. Si ingresó los datos incorrectos, recibirá un mensaje. Pero ahora necesito crear una sesión para almacenar la identificación.Crear sesión en C#
He buscado en la web y dicen que tiene que agregar Session["sessionName"]= data
, pero si escribo Session["userId"]=s.studentNummer
, él no reconoce nada. ¿Es mejor poner las sesiones en el DAL o en el DLL? Quería escribirlo en el DAL (función checkLogin). ¿Alguien puede ayudarme?
Aquí está mi código:
DALstudent.cs
public class DALstudent
{
dc_databankDataContext dc = new dc_databankDataContext();
public void insertStudent(Student s)
{
dc.Students.InsertOnSubmit(s);
dc.SubmitChanges();
}
public bool checkLogin(string ID, string passw)
{
bool canlogin = false;
var result = (from s in dc.Students
where s.studentNummer == ID && s.studentPasswoord == passw
select s).Count();
if (result == 1)
{
canlogin = true;
}
else
{
canlogin = false;
}
return canlogin;
}
}
BLLstudent.cs
public class BLLstudent
{
DALstudent DALstudent = new DALstudent();
public void insertStudent(Student s)
{
DALstudent.insertStudent(s);
}
public string getMD5Hash(string passwd)
{
MD5CryptoServiceProvider x = new MD5CryptoServiceProvider();
byte[] bs = Encoding.UTF8.GetBytes(passwd);
bs = x.ComputeHash(bs);
StringBuilder str = new StringBuilder();
foreach (byte b in bs)
{
str.Append(b.ToString("x2").ToLower());
}
string password = str.ToString();
return password;
}
public bool checkLogin(string ID, string passw)
{
bool canlogin = DALstudent.checkLogin(ID, passw);
if (canlogin == true)
{
return true;
}
else
{
throw new Exception("Uw gegevens kloppen niet");
}
}
}
login.aspx.cs
public partial class web_login : System.Web.UI.Page
{
protected void btnLogin_Click(object sender, EventArgs e)
{
try
{
BLLstudent BLLstudent = new BLLstudent();
var loginNr = txtLoginNr.Text;
var pass = BLLstudent.getMD5Hash(txtWachtwoord.Text);
var passw = pass;
BLLstudent.checkLogin(loginNr, passw);
Response.Redirect("student/s_procedure_goedkeuring.aspx");
}
catch (Exception Ex)
{
lblFeedback.Text = Ex.Message;
}
}
}
Sírvanse explicar en detalle "que no reconoce nada". Además, el estado de la sesión no entra en el DAL o el BLL. Pertenece directamente a la aplicación web. – David
es su ID de usuario igual que el ID que el usuario usa para iniciar sesión? En caso afirmativo, puede acceder directamente utilizando HttpContext.Current.User.Identity.Name.ToString() siempre que desee datos de identificación, sin necesidad de almacenarlos en la sesión –
MD5 no es un hash seguro. Usa SHA1 o SHA2 y no te olvides de sal. – Bengie