c# - asp.net登录后如何获取当前用户的用户名

标签 c# asp.net

我需要在登录后获取用户当前名称。我需要在页面中显示名称,如 welcome user 。请帮助我,我当前的代码如下

protected void Button1_Click(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["con1"].ConnectionString);
        con.Open();
        SqlCommand cmdr = new SqlCommand("Select name,password From registration", con);
        SqlDataReader dr = cmdr.ExecuteReader();
        while (dr.Read())
        {
            if (txt_name.Text == dr[0].ToString() && txt_pass.Text == dr[1].ToString())
            {
                Response.Redirect("logout.aspx");
            }
            else
            {
                label4.Text ="Invalid Username/Password";
            }
        }

    }

最佳答案

如果您使用的是 ASP.NET membership :

string userName = Membership.GetUser().UserName

但是,显然你没有使用它(我强烈推荐)。为什么在用户成功提供用户名和密码后重定向到 logout.aspx

除此之外,您根本没有在查询中使用提供的信息。

SqlCommand cmdr = new SqlCommand("Select name,password From registration", con);

所以你应该使用参数来过滤正确的记录:

using(var cmdr = new SqlCommand("Select name,password From registration where name=@name and password=@password", con))
{
    cmdr.Parameters.AddWithValue("@name", userName);
    cmdr.Parameters.AddWithValue("@password", password);
    if(cmdr.ExecuteReader().HasRows)
    {
        // user + password correct
    }
    else
    {
        // user or password incorrect
    }
}

关于c# - asp.net登录后如何获取当前用户的用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14458272/

相关文章:

c# - 使用 html Agility Pack 选择属性值

c# - Windows Phone 7 的 Protocol Buffer 网络

c# - HttpClient 提供的不是真正的异步操作吗?

asp.net - ASP :Button having position:fixed/absolute is not clickable on firefox nor google chrome

c# - 在 Compact Framework 中隐藏标题栏

c# - 根据其值设置 DataGrid 单元格背景(C#、WPF)

c# - 使用 C# 创建 XML

.net - 如何将美国的 DateTime.Now 转换为英国本地时间?

javascript - 验证 gridview 中选定的下拉值并使用选定值填充标签

asp.net - 从 Web 应用程序访问 HDFS