You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 12:12:42