2013-05-14 180 views
3

我正在使用數據庫的Parse API並試圖使用它提供的用戶名服務。據我所知,從教程,爲了登錄你這樣做:解析:無效的用戶名,密碼

ParseUser.logInInBackground("Jerry", "showmethemoney", new LogInCallback() { 
    public void done(ParseUser user, ParseException e) { 
    if (user != null) { 
     // Hooray! The user is logged in. 
    } else { 
     // Signup failed. Look at the ParseException to see what happened. 
    } 
    } 
}); 

如果登錄失敗,我只是想知道我怎麼能知道它是否失敗,因爲在輸入的用戶名無效或密碼。我知道,你可以做e.getCode()來獲取錯誤發生的類型,但是從這個網站https://parse.com/docs/android/api/我找不到任何錯誤代碼屬於無效的用戶名/密碼

謝謝 詹姆斯

回答

-1

ParseException的錯誤代碼記錄在ParseExceptionParse Android API reference docs中。

+0

這沒有解決問題,因爲您沒有指定哪個錯誤代碼表示無效的用戶名和/或無效的密碼 – isaach1000 2013-05-14 03:17:47

+0

yes isaach1000是正確的。我試圖通過這個,但我找不到相關的錯誤代碼 – James 2013-05-14 04:01:07

2

區分無效用戶和無效密碼似乎是一種安全風險。這些信息會讓黑客測試帳戶名稱,直到應用程序給出無效的密碼響應,這會讓黑客至少知道有效用戶的用戶名。因此,我認爲Parse故意使這一點變得困難。

但是,可以使用使用給定用戶名搜索用戶的查詢來執行此操作。如果查詢沒有返回用戶,則用戶名無效。如果用戶名返回用戶,則密碼無效。

3

這是我在我的一個應用程序中檢查用戶名/密碼的有效性。此方法提交對ParseUser類的查詢,如果傳遞的用戶名存在,則返回true,如果確實如此,則您知道用戶名有效。

(外部檢查ParseException.OBJECT_NOT_FOUND - 連同這一點,我們可以告訴用戶是否需要註冊或具有無效的密碼。)

public boolean queryCredentials(String username) { 
     ParseQuery<ParseUser> queryuserlist = ParseUser.getQuery(); 
     queryuserlist.whereEqualTo("username", username); 
     try { 
      //attempt to find a user with the specified credentials. 
      return (queryuserlist.count() != 0) ? true : false; 
     } catch (ParseException e) { 
      return false; 
     } 
    } 

希望這可以幫助別人這個問題。

2

根據我自己的測試,它看起來像使用代碼101(ObjectNotFound),如果用戶的憑據是無效的。出於isaach1000提到的安全原因,我不建議特別檢查是否由於用戶名或密碼。但是,如果你必須,請參閱斯賓塞的答案。

相關問題