如何修改ASP.NET代码在Dashboard页同时显示用户ID、邮箱及姓名
实现登录后在Dashboard展示用户ID、姓名和邮箱
一、修改登录页代码
首先修复原有代码的SQL注入漏洞,同时查询用户的姓名和邮箱字段(假设你的users表中姓名字段为userName,邮箱字段为userEmail,请根据实际表结构替换),并将这些信息存入Session:
try { string uid = TextBox1.Text.Trim(); string pass = TextBox2.Text; myCon.Open(); // 使用参数化查询避免SQL注入 string qry = "select userId, userName, userEmail from users where userId=@userId and Password=@Password"; SqlCommand cmd = new SqlCommand(qry, myCon); // 添加参数 cmd.Parameters.AddWithValue("@userId", uid); cmd.Parameters.AddWithValue("@Password", pass); SqlDataReader sdr = cmd.ExecuteReader(); if (sdr.Read()) { // 将用户ID、姓名、邮箱存入Session Session["userId"] = sdr["userId"].ToString().Trim(); Session["userName"] = sdr["userName"].ToString().Trim(); Session["userEmail"] = sdr["userEmail"].ToString().Trim(); Response.Redirect("Dashboard.aspx"); } else { Label4.Text = "用户名或密码错误,请重试!"; } sdr.Close(); // 关闭DataReader myCon.Close(); } catch(Exception ex) { Response.Write(ex.Message); }
二、修改Dashboard页面代码
在Dashboard页面读取Session中的用户信息并展示,同时添加空值判断避免异常:
protected void Page_Load(object sender, EventArgs e) { if (Session["userId"] == null) Response.Redirect("Login.aspx"); // 获取Session中的用户信息 string userId = Session["userId"].ToString(); string userName = Session["userName"]?.ToString() ?? "未设置"; string userEmail = Session["userEmail"]?.ToString() ?? "未设置"; // 拼接展示内容 SessionLabel.Text = $"用户ID: {userId}<br>姓名: {userName}<br>邮箱: {userEmail}"; } protected void ButtonLogout_Click(object sender, EventArgs e) { Session.Abandon(); // 清除所有Session内容 Session.Clear(); Response.Redirect("Login.aspx"); }
可选方案:Dashboard页面直接查询数据库
如果不想在Session中存储过多信息,也可以在Dashboard页面根据Session中的userId再次查询数据库获取姓名和邮箱:
protected void Page_Load(object sender, EventArgs e) { if (Session["userId"] == null) Response.Redirect("Login.aspx"); string userId = Session["userId"].ToString(); string userName = "未设置"; string userEmail = "未设置"; try { myCon.Open(); string qry = "select userName, userEmail from users where userId=@userId"; SqlCommand cmd = new SqlCommand(qry, myCon); cmd.Parameters.AddWithValue("@userId", userId); SqlDataReader sdr = cmd.ExecuteReader(); if (sdr.Read()) { userName = sdr["userName"].ToString().Trim(); userEmail = sdr["userEmail"].ToString().Trim(); } sdr.Close(); myCon.Close(); } catch(Exception ex) { Response.Write(ex.Message); } SessionLabel.Text = $"用户ID: {userId}<br>姓名: {userName}<br>邮箱: {userEmail}"; } protected void ButtonLogout_Click(object sender, EventArgs e) { Session.Abandon(); Session.Clear(); Response.Redirect("Login.aspx"); }
注意事项
- 请根据你的
users表实际字段名替换代码中的userName和userEmail; - 始终使用参数化查询避免SQL注入攻击,原有代码直接拼接字符串存在严重安全隐患;
- 生产环境中不建议明文存储密码,应使用哈希算法(如SHA256)存储密码哈希值,登录时对比哈希值而非明文。
内容的提问来源于stack exchange,提问作者gussy81
相关产品推荐
相关产品推荐

