在不使用mysql查询的情况下,通过从mysql数据库获取的排名来验证用户

时间:2013-11-21 21:54:56

标签: c# mysql authentication

我已尝试使用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连接?

提前致谢。

1 个答案:

答案 0 :(得分:4)

为什么不在服务器上创建Web服务,并使用用户名和编码密码调用其上的函数。所以服务器建立了自己的连接,只有服务器连接到自己的MySQL,检查出来:

Web Service built in C# to retrieve data from mySQL database