簡體   English   中英

使用ASP.NET針對MySQL數據庫進行用戶/密碼驗證

[英]User/Password Verification using ASP.NET against a MySQL database

強文本

protected void btnLogin_Click(object sender, EventArgs e)
    {
        string connectionString = ConfigurationManager.ConnectionStrings["moverschoiceConnectionString"].ConnectionString;
        OdbcConnection conn = new OdbcConnection(connectionString);
        conn.Open();
        OdbcCommand cmd = new OdbcCommand();
        cmd.Connection = conn;
        cmd.CommandText = "select Email, Password from brokercenter where Email = '" + txtLoginEmail.Text + "'";
        OdbcDataReader reader = cmd.ExecuteReader();
        reader.Read();
        if (reader.HasRows)
        {
            if (reader["Password"].ToString() == txtLoginPassword.Text)
            {
                reader.Close();
                Response.Redirect("BrokerResources.aspx");
            }
            else
            {
                lblLoginError.Text = "Invalid Password";
            }
        }
        else
        {
            lblLoginError.Text = "Invalid Email Address";
        }

    }

請理解,我剛剛完成入門級C#的學習,並被該公司聘請來開發站點。 以前的.NET家伙剛剛離開,所以我不知道他在哪里做什么。 這是我在此站點上的第一個問題,因此,如果格式不正確,我深表歉意。 我對此並不陌生,可以使用任何幫助。 簡而言之,我有兩個文本框和一個按鈕。 我可以讓用戶創建一個帳戶,該帳戶進入dB,但是我無法獲得要驗證的電子郵件(用戶名)和密碼。 當我單擊按鈕時,什么也沒有發生。 該公司有許多站點,因此我試圖從另一個登錄按鈕進行復制和粘貼,並更改我需要匹配當前站點信息的內容,但沒有進行任何更改。 我檢查了大約兩天,並嘗試了許多版本的登錄代碼,但仍然沒有。 我不知道此系統上已經安裝了什么。 同樣,我是入門級的(實際上是在10號剛完成的課程),所以請使用小寫單詞。
提前致謝!

單擊按鈕后,應觸發btnLogin_Click() btnLogin_Click之后,您應該重定向到另一個頁面Response.Redirect或對用戶lblLoginError.Text =的反饋。

如果沒有任何反應,我想btnLogin_Click()未鏈接到按鈕:在aspx頁面上,您應該具有<asp:Button ID="btnLogin" runat="server" onclick="btnLogin_Click" ..>

無論如何,在btnLogin_Click()內的任何地方放置一個斷點,開始調試並查看是否觸發!

試試這個代碼可以解決你的問題

protected void btnLogin_Click(object sender, EventArgs e)
{
   string connectionString = ConfigurationManager.ConnectionStrings["moverschoiceConnectionString"].ConnectionString;
   OdbcConnection conn = new OdbcConnection(connectionString);
  conn.Open();
  OdbcCommand cmd = new OdbcCommand();
  cmd.Connection = conn;
  cmd.CommandText = "select Email, Password from brokercenter where Email = '" + txtLoginEmail.Text + "'";
  OdbcDataReader reader = cmd.ExecuteReader();
  While(reader.Read())
  {
    if (reader["Password"].ToString() == txtLoginPassword.Text)
    {
        reader.Close();
        Response.Redirect("BrokerResources.aspx");
    }
    else
    {
        lblLoginError.Text = "Invalid Password";
    }
  }
  lblLoginError.Text = "Invalid Email Address"; 
  reader.Close();
}

由於您是新手,所以我想幫助您了解有關此代碼的一些知識。 我將概述代碼的功能:

  • 從用於配置應用程序的內置APS.net中獲取用於告訴應用程序如何連接和驗證數據庫的連接字符串。
  • 與sql數據庫的連接正在初始化和打開
  • 問題1-正在打開連接,但是如果發生任何故障,則連接沒有關閉,請將連接包裝在用塊中以進行保護
  • 正在構造一個命令來查詢SQL Server
  • 問題2-連接字符串未使用綁定參數,這意味着它容易受到SQL注入攻擊,這是幾年前的常見錯誤
  • 正在執行命令以獲取符合查詢條件的行集
  • 查詢正在查找與電子郵件等於在文本框中輸入的電子郵件地址的行匹配的行
  • 檢查閱讀器是否有任何結果,如果沒有,則返回有關電子郵件的錯誤
  • 問題3-此處的連接未關閉,這將在以后導致問題,請參閱問題1
  • 由於我們有一行,因此請檢查行的密碼值以與輸入的內容進行比較
  • 問題4-連接不會再次因錯誤而關閉,請參閱問題1
  • 問題5-密碼為純文本格式,應予以保護
  • 如果密碼匹配,請重定向到新頁面
  • 潛在問題6-由於沒有采取任何措施來標記用戶已登錄,因此您可能可以跳過登錄頁面,這是安全性受到破壞的

另外,正如已經提到的那樣,檢查Asp.net腳本中的按鈕單擊事件,方法名稱需要與頁面本身上指定的名稱匹配以進行連接。

希望這可以為您提供一些工作,並希望它將指導您的學習。

祝一切順利

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM