gpt4 book ai didi

c# - 在 C# 中创建 session

转载 作者:可可西里 更新时间:2023-11-01 07:53:33 26 4
gpt4 key购买 nike

您好,我正在用 C# 使用 3 层从头开始创建登录表单。我设法构建了一个工作表单来检查用户数据是否正确。如果他填写了错误的数据,他会收到一条消息。但是现在我需要创建一个 session 来存储 id。

我在网上搜索过,他们说你必须添加 Session["sessionName"]= data,但是如果我输入 Session["userId"]=s.studentNummer 他什么都不认识。将 session 放在 DAL 中还是放在 DLL 中更好?我想把它写在 DAL 中(函数 checkLogin)。有人可以帮帮我吗?

这是我的代码:

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");
}
}
}

登录.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;
}
}
}

最佳答案

.NET session 状态在表示层中处理,尽管它可以在 Web 工作进程中运行的任何业务逻辑中访问(请注意,还有进程外 session 状态,但它也是从表示层管理的) .在表示层之外与 session 交互很少是好的做法。

在业务层中,可以通过以下方式访问 session :

System.Web.HttpContext.Current.Session

在大多数 Web 实体(页面、控件、 View )中,它仅由 Session 引用。

Session是一个基于key的集合;你用一个键输入一个值,然后用一个键检索相同的值。

protected override void OnLoad( EventArgs e )
{
Session["foo"] = "bar";
string valueFromSession = Session["foo"].ToString();
}

关于c# - 在 C# 中创建 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8523931/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com