解析:用户名,密码无效

时间:2013-05-14 02:47:01

标签: android parse-platform

我正在为数据库使用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/我找不到与无效用户名/密码有关的任何错误代码

谢谢 詹姆斯

4 个答案:

答案 0 :(得分: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;
        }
    }

希望这可以帮助解决此问题的人。

答案 1 :(得分:2)

区分无效用户和无效密码似乎是一种安全风险。此信息将允许黑客测试帐户名称,直到应用程序给出无效的密码响应,这将使黑客至少知道有效用户的用户名。因此,我认为Parse故意让这很困难。

但是,可以使用搜索具有给定用户名的用户的查询来执行此操作。如果查询未返回任何用户,则用户名无效。如果用户名返回用户,则密码无效。

答案 2 :(得分:2)

根据我自己的测试,如果用户的凭据无效,它看起来像是使用代码101(ObjectNotFound)。出于安全原因,我建议不要特别检查是否因为用户名或密码而提及。但是,如果必须,请参阅斯宾塞的回答。

答案 3 :(得分:-1)

ParseException的错误代码记录在ParseExceptionParse Android API reference docs下。