none
請問各位大大有關login的問題 在網頁輸入的使用者密碼為明碼 如何轉換為資料庫內的加密密碼呢? RRS feed

  • 問題

  • 請問各位大大:

          我有個問題就是我在LOGIN的畫面輸入帳號及密碼,但輸入的密碼為明碼 但資料庫中的密碼為加密後的密碼  因此在驗證時無法相等(輸入的密碼與資料庫中的密碼不相等) 請問各位大大我該如何才能使輸入的密碼等於資料庫的密碼?如果我在Login中輸入使用者ab的密碼為ab就可以驗證過去 如果輸入的是alan.hsu的未加密前的密碼(hsu123)但加密後變為C-9<ttwz就過不去 請問各位大大 我該如何在Login輸入密碼時自動加密 變為如同資料庫中的密碼

    程式碼如下

    using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.Web.Configuration;
    using System.Web.UI.WebControls;

    public partial class LoginAuthenticate : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        //使用自訂的身份驗證事件
        protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
        {
            //將login控制項的登入帳號一律轉換為小寫
            userLogin.UserName = userLogin.UserName.ToLower();//  ToUpper();

            //這段可自訂驗證的程序,若您已有帳號的資料庫,可以在這裡用ADO.NET的方式
            //連結自己的資料庫來驗證
            //取得Web.config中設定的資料庫連線字串
            string connString = WebConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString;
            SqlConnection conn = new SqlConnection(connString);
            conn.Open();

            //或者也可以直接將連線字串寫在程式之中
            SqlCommand cmd = new SqlCommand("Select  使用者代號 from 使用者 Where 使用者代號=@paramID and 密碼=@paramPwd", conn);
            cmd.Parameters.Add("@paramID", SqlDbType.NVarChar, 12).Value = userLogin.UserName;
            cmd.Parameters.Add("@paramPwd", SqlDbType.NVarChar, 15).Value = userLogin.Password;

            //若帳號及密碼符合則回傳一個Object型態(ID欄位)
            //故必須將Object轉型為字串
            string txtID = (string)cmd.ExecuteScalar();

            cmd.Dispose();
            conn.Close();
            conn.Dispose();

            //判斷txtID是否為空值,非空值則為false,空值為true
            if (!string.IsNullOrEmpty(txtID))
            {
                e.Authenticated = true;    //驗證通過
            }
            else
            {
                e.Authenticated = false;//驗證失敗
            }
        }
    }

    謝謝各位大大

    2016年1月13日 上午 07:59

解答

所有回覆