2010-09-09 36 views
2

請告訴我如何構建Windows窗體登錄(不是ASP.net) 。此登錄不僅應使用Windows身份驗證方法進行驗證,還應使用數據庫用戶。如何開發登錄表單C#.net

驗證用戶名和密碼的方式。 我用這個類型的查詢它

SELECT COUNT(*) FROM [Table Name] WHERE UserName = @username AND Password = @password; 

如果用戶可用的計數> 0 上面部分手柄代碼側。

using int x = Int32.Parse(commandObject.ExecuteScalar().ToString()); 
if(x > 0} 
    **log** 
else 
    **fail** 

我該如何做到專業和正確的方式?

回答

2

由於您已經擁有SQL,所有您需要的只是一個基本表單,除了隱藏密碼之外,登錄表單沒有什麼特別之處,您可以使用TextBox.PasswordChar屬性來完成此操作。

+0

其實,有些人覺得躲在密碼是不是一件好事,雖然這對一個網站比在桌面應用程序中更大的imapct。 http://www.useit.com/alertbox/passwords.html – mickeyf 2010-09-09 13:53:33

+0

@mickeyf:我認爲這主要是在設置/更改密碼時,而不是在您剛剛登錄時。 – 2010-09-09 13:59:15

+0

無論在哪種情況下,權衡是「我是否更擔心誰在看我的肩膀,或者'我不明白我是否髮指或不'。」請注意,我並不偏袒,只是指出了爭議。 – mickeyf 2010-09-10 04:48:29

0

「Windows身份驗證」是什麼意思?您可以從環境中讀取登錄的用戶並使用此值預填充用戶文本字段。

tbUserName = Environment.UserName; 

在用戶輸入密碼後,您的設置會指示要執行的操作。密碼數據庫散列(MD5,SHA1)還是逐字?如果是,請對輸入的密碼進行散列處理 - 否則不要。

您可以使用這兩個字符串使用您的偏好技術(例如ADO.Net)從您的DataSource中選擇實體。如果沒有結果返回,登錄失敗。記住:這樣你就無法分辨只有密碼或用戶或兩者都是錯誤的。

0

「專業和正確的方式」

這取決於你應用程序,你讓任何還挺內容可以看出還是先認爲應該登錄?

如果是:

  • 與您的登錄屏幕
  • 在「登錄」創建一個窗口表單按鈕被點擊,檢查SQL你想要的方式
  • 如果OK,關閉該窗口,並做一個form.Show()您的應用程序
  • 其他的主窗口,只給一個很好的理由,你不允許用戶繼續

如果Windows身份驗證,您需要檢查該Windows用戶是否可以訪問它,執行相同的過程,但您的行爲例如是formLogin.Active,並要求提供憑據,如果該Windows用戶不是有效的用戶並再次執行上述過程。

舉個例子,SuperOffice CRM 6 for Windows應用程序,有這樣的登錄表單:

alt text http://www.balexandre.com/temp/2010-09-09_1557.png

我希望這有助於獲得一個想法。

如果您詢問代碼只有,那麼你已經有了很好的答案。

0

只是一個想法... 讓您登錄的第一個屏幕的用戶訪問。 如果他們通過,然後顯示主應用程序窗體並隱藏登錄。 如果他們失敗,只需顯示一條消息說明。 這不像web應用程序,用戶可以在其中鍵入url並嘗試訪問他們想要的任何頁面。 你有完全控制:)