![](/img/trans.png)
[英]How to check if user with [UserName] and [Password] is domain administrator of [DomainName] without impersonation?
[英]Check if for username and password the type is for a client or for a administrator
我刚刚用 SQL 用 C# 完成了一个数据库。 在我的数据库中,我在为某人创建帐户时添加数据。 我添加了用户名、密码、名字和姓氏以及类型(客户端或管理员)。
当我登录时,我所做的就是检查用户名和密码是否正确。 这是代码。
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!");
}
}
接下来我要做的是检查这个用户名和密码的类型是客户端还是管理员。 如果是管理员在表格中输入,或者如果是客户端以其他表格输入。
我能怎么做? 我需要一些想法。
您正在从数据库表中检索整行,因此您还检索了包含用户类型的列。 您只需在验证登录后检查即可
这里的示例假设“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?
}
}
附带说明,当您使用参数时,您的数据库/代码逻辑中仍然存在安全问题。 您似乎将密码存储为纯文本。 这可以让查看您的数据库表的任何人都有可能知道您的用户密码。 密码不应以纯文本形式存储。 这个站点包含很多关于如何在数据库中正确存储密码的答案
从这里开始:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.