如何验证密码并使用角色将管理员重定向到管理员页面和用户重定向到用户页面
本文关键字:重定向 管理员 用户 角色 何验证 验证 密码 | 更新日期: 2023-09-27 17:52:46
这是我的代码:
protected void loginBtn_Click(object sender, EventArgs e)
{
if (IsPostBack)
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["userDatabaseConnectionString1"].ConnectionString);
conn.Open();
DataSet ds = new DataSet();
SqlCommand cmd = new SqlCommand("select role from accounts", conn);
SqlDataAdapter da = new SqlDataAdapter();
cmd.CommandType = CommandType.Text;
da.SelectCommand = cmd;
da.Fill(ds);
if (ds.Tables[0].Rows.Count > 0)
{
string role = Convert.ToString(ds.Tables[0].Rows[0]["role"]);
if (role == "a")
{
Response.Redirect("AdminPage/adminAccount.aspx");
}
if (role == "u")
{
Response.Redirect("UserPage/userAccount.aspx");
}
}
else
{
//record is not in ur table
}
}
}
角色a
为admin角色,角色u
为users角色。
如何验证和重定向正确登录的用户?
现在这段代码将我重定向到管理员主页,每当我点击登录,无论用户名和密码是否正确。
我需要添加什么来修复这个问题?
SqlCommand cmd = new SqlCommand("select role from accounts where Username=@Username and Password=@Password", conn);
cmd.Parameters.AddWithValue("@Username",txtUsername.Text);
cmd.Parameters.AddWithValue("@Password",txtPassword.Text);
你根本不知道自己在做什么
请讲点逻辑,因为我正试图解释你的
SqlCommand cmd = new SqlCommand("select role from accounts", conn);
这一行将返回所有用户,对吗?
但是你需要特定的用户数据,所以像这样写
SqlCommand cmd = new SqlCommand("select role from accounts where username='"+yourusernametextbox.text+"' and password='"+yourpassword.text+"'--", conn);
当角色为admin或user时,将返回真实结果
现在给你一个建议
像这样格式化查询可能会导致sql注入,而请使用参数化查询
您的密码和用户名字符串在哪里?您如何检查用户输入的那些是否有效?当你得到它们时,你可以这样使用它们:
SqlCommand cmd = new SqlCommand("select role from accounts where username = '" + usernameString + "' and password = '" + passwordString + "'", conn);