2013-05-14 181 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提到的安全原因,我不建议特别检查是否由于用户名或密码。但是,如果你必须,请参阅斯宾塞的答案。

相关问题