阻止用户输入相同的用户名和电子邮件到数据库

时间:2017-08-22 07:21:51

标签: java android firebase firebase-realtime-database

目前我使用电子邮件身份验证注册新用户到数据库,但现在我遇到了验证用户名和电子邮件的问题,这是阻止用户输入相同的用户名和密码到数据库所以你们可以帮我看看是否检索数据声明出错了?

<div class="container">
  <div class="first-div">
    <div class="letter">Q</div>
    <div>another div</div>
  </div>

  <div class="second-div">
     <div class="letter">A</div>
     <div>another div</div>
  </div>
</div>

我希望可以防止用户在注册时输入相同的输入。 enter image description here

2 个答案:

答案 0 :(得分:1)

以下是在Firebase上成功注册用户后获取uid的解决方案。您需要在注册时添加onCompleteListener,在Firebase返回uid后,您可以查询Firebase以获取用户名和电子邮件。

public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
    //Problem with saving the data
    if (databaseError != null) {

    } else {
        //User has registered, retrieve his uid
        String uniqueKey = databaseReference.getKey();        
    }
}

答案 1 :(得分:1)

为了解决您的问题,我重申您实施Firebase Authentication,这是您案例中的最佳解决方案。这种方法解决了所有重新认证问题并节省时间的问题,因为您不需要维护任何代码。

如果你仍然想要使用你的方法,为了检查我的重新定位的唯一性你稍微改变了你的数据库结构。我没有使用unique keyUID,而是使用email address重新命名。它也很独特,非常易于使用。请记住,使用UID并不总是最佳解决方案,因为如果您让用户删除其帐户的可能性,如果他再次登录,则会生成另一个UID,这会给您带来麻烦。

要检查电子邮件地址/用户名的唯一性,我还会重新命令您在Firebase数据库(emailAddresses / userNames)中创建另一个节点,您需要在其中添加所有电子邮件地址和所有用户名。要验证电子邮件地址/用户名的存在,只需在该特定节点上添加一个侦听器,并使用exists()对象上的dataSnapshop方法。

希望它有所帮助。