2012-03-01 106 views
-1

我想做一個簡單的登錄頁面,而不用註冊只是在SQL數據庫中使用的用戶名和密碼。這是我現在寫的按鈕1:如何製作簡單的登錄頁面?

string connection_string = "Path to database"; 
SqlConnection connect = new SqlConnection(); 
connect.ConnectionString = connection_string; 
connect.Open(); 
string sql = "Select * FROM Register where [email protected] and [email protected]"; 
SqlCommand 1 = new SqlCommand("username",textbox1User.text); 
SqlCommand 2 = new SqlCommand("password",textbox2pass.text); 

這就是我現在所擁有的。我需要做其餘的登錄頁面,如果值確定,那麼我將被重定向到一個頁面上。但我也需要知道如何保護頁面,使其不被其他用戶訪問,只需輸入文件的URL即可。所以它應該只工作如果我登錄。

+0

不要以純文本形式存儲密碼。 – SLaks 2012-03-01 20:08:01

+3

您應該使用ASP.Net的內置成員資格並形成認證系統。不要重新發明車輪,特別是在安全方面。 – SLaks 2012-03-01 20:08:30

+0

在C#新?或作爲開發人員? – 2012-03-01 20:20:18

回答

6

首先,我必須祝賀你想要爲SQL使用參數。很多初學者不這樣做,導致可怕的SQL注入攻擊。

其次,你真的應該哈希你的密碼。永遠不要存儲純文本密碼。由於密碼亂碼的確切程度是一個爭論很大的問題,並且會使代碼複雜化,所以我現在就把它放在一邊。

現在,轉入實際問題。首先,代碼中有一些錯誤。首先是參數正在創建錯誤的,你有什麼應該沿着這個線路更多:

using(SqlConnection conn = new SqlConnection("connection string")) 
{ 
    SqlCommand cmd = new SqlCommand("Select * FROM Register where [email protected] and [email protected]", conn); 
    cmd.Parameters.AddWithValue("@username", textbox1User.Text); 
    cmd.Parameters.AddWithValue("@password", textbox2User.Text); 
} 

(見http://msdn.microsoft.com/en-us/library/yh598w02.aspx更多有關使用這是一個好習慣進入)

隨着該完成後,可以輕鬆地驗證登錄,你可以爲你的SqlCommand做這樣的事情:

0:

SELECT COUNT(*) FROM Register WHERE [email protected] AND [email protected] 

然後添加到您的代碼,添加參數後,但在using右大括號前

conn.Open();  
int result = Convert.ToInt32(cmd.ExecuteScalar()); 

result將爲0,如果沒有用戶發現,或1如果只有一個用戶被發現(如果你可以有多個用戶使用相同的用戶名,也有這個範圍以外的其他問題)。

現在,作爲強制訪問控制看看http://support.microsoft.com/kb/301240您感興趣的術語是「表單身份驗證」和「web.config授權」。請注意,所提供的鏈接中的代碼示例有點過時,但通常會顯示如何完成您所要求的內容。

這應該讓你開始正確的軌道。

-1

你也可以使用HTACCESS來控制你的內容和密碼來保護它。這是最簡單的方法,因爲您不必擔心SQL和存儲密碼。

+2

考慮到ASP.Net的問題,並且是一個初學者問題,我懷疑他們在Apache上運行Mono,這是.htaccess的用處。 – 2012-03-01 20:23:27

+0

是的,但他說用戶不需要註冊,所以在這種情況下,htaccess是最好的。 Didnt'知道它不適用於ASP.NET – 2012-03-01 20:25:59