gpt4 book ai didi

c# - 检查用户名和密码的类型是用于客户端还是管理员

转载 作者:搜寻专家 更新时间:2023-10-30 23:39:35 26 4
gpt4 key购买 nike

我刚刚用 C# 和 SQL 完成了一个数据库。在我的数据库中,我在为一个人创建帐户时添加数据。我添加了用户名、密码、名字和姓氏以及类型(客户端或管理员)。

当我登录时,我所做的就是检查用户名和密码是否正确。这是代码。

private void button1_Click(object sender, EventArgs e)
{
con = new SqlConnection(@"Data Source=MARIA-PC;Initial Catalog=Account;Integrated Security=True");
SqlCommand cmd1 = new SqlCommand("SELECT * FROM [dbo].[Cont] WHERE Username = @Username and Password = @Password;", con);
cmd1.Parameters.AddWithValue("@Username", this.Username.Text);
cmd1.Parameters.AddWithValue("@Password", this.Password.Text);
cmd1.Connection = con;
con.Open();

DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd1);
da.Fill(ds);
con.Close();

bool loginSuccessful = ((ds.Tables.Count > 0) && (ds.Tables[0].Rows.Count > 0));

if (loginSuccessful )
{
MessageBox.Show("You logged in successfully!","Success!");
this.Visible = false;
f3.ShowDialog();
this.Visible = true;
}
else
{
MessageBox.Show("Invalid username or password!", "Error!");
}

}

接下来我要做的是检查此用户名和密码的类型是针对客户端还是管理员。以及是否供管理员以一种形式输入,或者是否供客户以另一种形式输入。

我该怎么办?我需要一些想法。

这是表格: enter image description here

最佳答案

您正在从数据库表中检索整行,因此您还检索了包含用户类型的列。您只需在验证登录后查看即可

这里有一个例子,假设“1”值表示管理员,“2”表示普通用户(当然您可以将这些常量更改为您的实际值)

   if (loginSuccessful )
{
string userType = ds.Tables[0].Rows[0]["Type"].ToString();
if(userType == "1")
{
// User is an administrator, go to admin form
}
else if(userType == "2")
{
// User is a normal user, go to user form
}
else
{
// Unexpected value, error message?
}
}

旁注,当您使用参数时,您的数据库/代码逻辑中仍然存在安全问题。您似乎将密码存储为纯文本。这可以让任何查看您的数据库表的人都有可能知道您的用户密码。密码永远不应以明文形式存储。这个站点包含很多关于如何在数据库中正确存储密码的答案

从这里开始:

Best way to store passwords in a database

关于c# - 检查用户名和密码的类型是用于客户端还是管理员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36741415/

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