2012-09-17 20 views
0

最初我在閱讀java.I中的一些異常知識時,經歷了一些建議,例如,如果在jdk中存在已明確定義的異常並且不使用客戶異常,則不要使用客戶異常處理工作流程。我同意這些觀點,他們是絕對正確的。現在我正在考慮如何處理這種情況。這非常簡單。用戶登錄。如何在我的場景中使用客戶異常

1用戶名不存在 2密碼錯誤

這些將在DAO層被稱爲,我要填充到控制器層的有用信息(最終),並讓控制器知道發生了什麼事情,並顯示有用的提示在視圖中。

當我第一次學習java我在做這樣的

這些都是僞代碼;

if(usernotexit) 
    {throw usernotExistException()} 
    if(password_wrong) 
    {throw passwordWrongException()} 

這是一個很好的做法嗎?如果沒有,如何正確地做到這一點?

回答

0

假設堆棧中的某些代碼捕捉異常並顯示有用的信息,這種一般方法沒有問題。

但是,對於這種情況下的安全異常,明智的做法是不要在給用戶的消息中區分這兩個條件。如果你告訴用戶哪一個是錯誤的,這個信息可以用來探測有效的用戶。

爲這兩種情況返回給用戶的響應應該是「身份驗證失敗」。這樣你就沒有給出任何有用的信息(例如用戶存在)。

請注意,內部您可能想區分記錄的情況。只是不要告訴用戶發生了哪一個。

0

嘗試結合這兩種情況:

if(usernotexit || password_wrong) 
    { 
     throw user_password_Not_Match() 
    } 

它不是一個很好的做法,告訴端使用的用戶名是不正確或密碼是出於安全考慮。爲了更高的安全性目的,您應該拋出一般例外。

相關問題