Firebase-如何仅使用用户名(不输入密码/电子邮件)实施登录?

时间:2018-10-17 00:56:47

标签: javascript jquery firebase firebase-realtime-database

我正在为课程分配创建一个Webapp,并且想创建一个仅包含用户名的登录名。我尝试过仅将用户名推送到数据库,但将其作为子项推送到Firebase中的连接ID。这是我到目前为止创建的Javaascript:

var config = {
    apiKey: "",
    authDomain: "",
    databaseURL: "",
    projectId: "",
    storageBucket: "",
    messagingSenderId: ""
};
firebase.initializeApp(config);

var database = firebase.database();

var connectionsRef = database.ref("/connections");
var userRef = database.ref("/users")
var connectedRef = database.ref(".info/connected");

connectedRef.on("value", function (snap) {
    // If they are connected..
    if (snap.val()) {
        // Add user to the connections list.
        var con = connectionsRef.push(true);
        // Remove user from the connection list when they disconnect.
        con.onDisconnect().remove();
    }
});

var database = firebase.database();
var username = "";

$("#submit").on("click", function (event) {
    event.preventDefault();

    username = $("#username").val().trim();
    userRef.push({
        username: username
    });

    $("#login-screen").attr("class", "hidden");
});

我计划允许用户在离开页面后保留其统计信息,因此我认为将其分配给用户名是一种方法。如果有更好的方法可以解决此问题,请告诉我。

1 个答案:

答案 0 :(得分:1)

您可以在数据库中创建一个名称为usernames的单独节点,并在其中存储用户的所有用户名。

要检查正确的登录名,您可以在该孩子中进行检查,以查找您输入的用户名,如果该用户名与他们中的任何一个都匹配,则可以授予他们登录名。

value观察者分配给数据列表将以单个快照的形式返回整个数据列表,然后您可以循环访问它们以访问各个子项。

ref.once('value', function(snapshot) {
     snapshot.forEach(function(childSnapshot) {
         var childKey = childSnapshot.key;
         var childData = childSnapshot.val();
         // ...
      });
});

docs here.

中了解有关此内容的更多信息

您也可以像处理子事件一样使用on('value', ...)