如何在Web应用中使用Firebase完成用户授权?

时间:2016-05-06 08:07:48

标签: javascript firebase firebase-realtime-database firebase-authentication

我使用Firebase获得了以下用户授权代码,但我无法理解代码。我在代码下面提到了我所面临的疑虑。有人澄清他们。

var ref = new Firebase("https://prj_name.firebaseio.com");
var loggedInUser = [];
$(document).ready(function() {
    authData=ref.getAuth();

    if(authData == null){
        //TODO find an elegant way to manage authorization 
    //  window.location = "../index.html";
    }else{
        ref.child("users").child(authData.uid).on("value", function(snapshot){
            $( "span.user-name").html(snapshot.val().displayName);  
            loggedInUser.displayName = snapshot.val().displayName;
        });

    }

    $("#cPassword").focusout(function() {
        validatePassword($("#cPassword"), $("#password"));
    });


    $(document).on("click", ".clickable-row" ,function(){
        window.document.location = $(this).data("href");
    });
});

function validatePassword(password, cPassword) {
    if (cPassword.val() != password.val()) {
        cPassword.css('border-color', 'red');
        password.css('border-color', 'red');
        return false;
    }
    return true;
}

所有必要的库,如firebase已被包含在内,上面的代码工作得非常好,唯一的问题是我无法理解它。

我的怀疑如下:

  1. authData=ref.getAuth();做什么以及authData在执行后包含什么?
  2. 在else块中,快照是什么。我完全不懂。 ref.child("users").child(authData.uid).on("value", function(snapshot)
  3. 有人可以澄清我的怀疑吗?谢谢。

1 个答案:

答案 0 :(得分:2)

好的,请点击:

首先,如果您还没有更新您的firebase安全规则:Firebase security rules guide

  1. ref.getAuth()返回一个值,如果您尚未获得授权,该值将为null,或者它将包含一个对象,其中包含有关用户如何被授权的信息(自定义令牌,Facebook ID) ,电子邮件等。)

  2. 这一行:ref.child("users").child(authData.uid).on("value", function(snapshot)。在这里,您基本上要求用户收集一些数据:' / users / {some unique id}'。当您从firebase请求数据时,只要数据准备好使用,Firebase就会触发"值"回调并使用此回调传递数据(快照)。

  3. firebase文档非常好,我建议阅读整个网络指南。 Firebase web guide

    我希望我能为你清理一些事情!