我已尝试使用Mysql查询进行身份验证,但由于服务器的限制,除非您手动添加异常,否则不允许任何外部连接,但这对于很多用户来说会很乏味。
以下是我最初使用的,当验证成功(存在用户名和密码)时,应该将名为“status”的文本标记为已连接或未连接:
public partial class Login : Form
{
MySqlConnection connect = new MySqlConnection("Server=SERVER;Database=DB;Uid=USER;Pwd=PWD");
public Login()
{
InitializeComponent();
}
public string LabelText
{
get
{
return this.status.Text;
}
set
{
this.status.Text = value;
}
}
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
ProcessStartInfo sInfo = new ProcessStartInfo("http://beatpadpc.com/member.php?action=register");
Process.Start(sInfo);
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
}
public static string MD5Hash(string text)
{
MD5 md5 = new MD5CryptoServiceProvider();
//compute hash from the bytes of text
md5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(text));
//get hash result after compute it
byte[] result = md5.Hash;
StringBuilder strBuilder = new StringBuilder();
for (int i = 0; i < result.Length; i++)
{
//change it into 2 hexadecimal digits
//for each byte
strBuilder.Append(result[i].ToString("x2"));
}
return strBuilder.ToString();
}
private void button1_Click(object sender, EventArgs e)
{
connect.Open();
MySqlCommand cmd = new MySqlCommand("SELECT * FROM mybb_users WHERE username = " + textBox1.Text + " AND (password = " + MD5Hash(textBox2.Text) + " AND usergroup = \"3\" OR usergroup = \"4\" OR usergroup = \"6\" OR usergroup = \"8\")");
MySqlDataReader read = cmd.ExecuteReader();
if (read.Read())
{
status.Text = "Connected";
MessageBox.Show("Success!");
}
else
{
status.Text = "Not Connected";
MessageBox.Show("Error!");
}
}
}
有没有办法对用户进行身份验证,如果凭据是正确的,并且用户在用户组3,4,6或8上进行状态。文本“已连接”或“未连接”,但需要计数服务器限制外部mysql连接?
提前致谢。
答案 0 :(得分:4)
为什么不在服务器上创建Web服务,并使用用户名和编码密码调用其上的函数。所以服务器建立了自己的连接,只有服务器连接到自己的MySQL,检查出来:
Web Service built in C# to retrieve data from mySQL database