我已經詢問過類似的問題,但我已經縮小到我的問題,我一直在這個工作了幾個小時,無法計算這一點。發送身份驗證信息到SQL Server無法正常工作(C#)
基本上,我有一個Visual Studio Wep應用程序,我試圖使用登錄頁面和SQL Server數據庫來驗證用戶憑據。用戶進入用於登錄畫面上的用戶名和密碼的字符串,其被送到這裏對後面的代碼:
private bool ValidateUser(string userName, string passWord)
{
SqlConnection conn;
SqlCommand cmd;
string lookupPassword = null;
// Consult with your SQL Server administrator for an appropriate connection
// string to use to connect to your local SQL Server.
conn = new SqlConnection(ConfigurationManager.ConnectionStrings["databaseConnect"].ConnectionString);
conn.Open();
// Create SqlCommand to select pwd field from users table given supplied userName.
cmd = new SqlCommand("Select Password from Users where [email protected];", conn);
cmd.Parameters.Add("@userName", System.Data.SqlDbType.VarChar, 25);
cmd.Parameters["@userName"].Value = userName;
lookupPassword = (string)cmd.ExecuteScalar();
// If no password found, return false.
if (null == lookupPassword)
{
return false;
}
private void cmdLogin_ServerClick(object sender, System.EventArgs e)
{
if (ValidateUser(txtUserName.Value,txtUserPass.Value))
(logs in)
}
該應用程序在數據庫中,目前持有一個測試項目連接的表,如所示這裏:http://i.imgur.com/YFOQYKm.jpg
但是,當我輸入「test」作爲用戶名和「password」作爲密碼時,它不接受登錄。
我試圖只包括我的代碼的相關部分,使之成爲任何人試圖回答這個問題更加清晰,但這裏是我的問題談幾點看法:
- 當我設置如果(空== lookupPassword )爲「返回true」而不是「返回false」,應用程序允許登錄。 這意味着lookupPassword在「lookupPassword =(string)cmd.ExecuteScalar();」之後仍然爲空
- 如果將if(ValidateUser(txtUserName.Value,txtUserPass.Value))更改爲if(userName = test和passWord = password),則應用程序正常工作。所以問題不在於登錄到應用程序的實際行爲,而僅僅是找不到SQL Server憑據爲真。
- 「databaseConnect」在應用程序的其他地方工作,所以這不是問題。
- 當我提交登錄憑證時,應用程序沒有中斷,它根本沒有接受它們是正確的。
都會響起的是,這個問題是來自這幾行字在我看來:
cmd = new SqlCommand("Select Password from Users where [email protected];", conn);
cmd.Parameters.Add("@userName", System.Data.SqlDbType.VarChar, 25);
cmd.Parameters["@userName"].Value = userName;
lookupPassword = (string)cmd.ExecuteScalar();
是否有人看到這個問題可能是我嗎?我對編程非常陌生,請儘量保持答案儘可能簡單。預先感謝您的任何幫助。 :)
ExecuteScalar調用後'lookupPassword'的值是多少? – Richard 2014-09-04 12:50:29
從您所說的話來看,您似乎在訪問用戶輸入數據方面存在問題。什麼類型的對象是txtUsername/txtPassword? – alexc95 2014-09-04 12:51:20
PS。您似乎在存儲明文密碼,請考慮如果(由於其他漏洞)有人訪問數據庫會發生什麼情況? (它已經做了很多次了,你*不*不同)。 – Richard 2014-09-04 12:51:41