正确使用Firebase身份验证?

时间:2018-03-02 13:54:25

标签: javascript node.js firebase firebase-authentication

我正在开发一个nodejs应用程序。目前我有一个登录页面和一个主页,在用户登录后应该可以访问。

我决定使用Firebase提供的Google和Facebook身份验证。 我已经实现了它,但我不确定这是否是正确的方法。 Firebase也提供了admin-sdk,我是否需要使用它?

这是我的代码 - 登录页面 -

<script src="https://www.gstatic.com/firebasejs/4.10.1/firebase.js"></script>
<script>
    // Initialize Firebase
    var config = {
        apiKey: "*****", authDomain: "*****", databaseURL: "*****", projectId: "*****", storageBucket: "*****", messagingSenderId: "*****"
    };
    firebase.initializeApp(config);
</script>

<script src="https://cdn.firebase.com/libs/firebaseui/2.6.2/firebaseui.js"></script>
<link type="text/css" rel="stylesheet" href="https://cdn.firebase.com/libs/firebaseui/2.6.2/firebaseui.css" />
<script type="text/javascript">
    // FirebaseUI config.
    var uiConfig = {
        signInSuccessUrl: '/home',
        signInOptions: [
            firebase.auth.GoogleAuthProvider.PROVIDER_ID,
            firebase.auth.FacebookAuthProvider.PROVIDER_ID,
        ],
        tosUrl: '/terms-of-use'
    };

    var ui = new firebaseui.auth.AuthUI(firebase.auth());
    ui.start('#firebaseui-auth-container', uiConfig);
</script>
<script>
    firebase.auth().onAuthStateChanged(function (user) {
        if (user) {
            window.location.replace("/home");
        } else {

        }
    }, function (error) {
        console.log(error);
    });
</script>

主页 -

<script src="https://www.gstatic.com/firebasejs/4.10.1/firebase.js"></script>
    <script>
        // Initialize Firebase
        var config = {
            apiKey: "*****", authDomain: "*****", databaseURL: "*****", projectId: "*****", storageBucket: "*****", messagingSenderId: "*****"
        };
        firebase.initializeApp(config);
    </script>

    <script>
    firebase.auth().onAuthStateChanged(function (user) {
        if (user) {
            // User is signed in.
        } else {
            window.location.replace("/");
        }
    }, function (error) {
        console.log(error);
    });

    var signOutButton = document.getElementById("sign-out-btn");
    signOutButton.addEventListener("click", function () {
        firebase.auth().signOut().then(function () {
            // Sign-out successful.
        }).catch(function (error) {
            // An error happened.
        });
    });
    </script>

基本上我无法弄清楚在应用程序中放置firebase的位置以及我是否以最佳方式使用它。 这里有很多配置,而且我必须写的代码很少,这让我有点不舒服。可以请任何人解释firebase auth应该使用或指向正确的方向。 谢谢。

1 个答案:

答案 0 :(得分:1)

getting started with the Admin SDK documentation说:

  

Admin SDK允许您与特权环境中的Firebase 进行交互 ...

您可以控制特权环境,例如:您的笔记本电脑/台式机,用于托管内容的服务器,或项目的云功能。如果这是您要与应用的常规用户共享的网页,那么您应使用管理SDK。

您在顶部的配置只是一系列属性,允许各种Firebase SDK在Google服务器上查找您的项目。将这些暴露给常规客户并不是安全漏洞,事实上,必须允许他们访问您应用的后端。

您分享的代码看起来不错。如果您对该方法不确定,可能会更容易首先使用Firebase codelab for web developers,它会指导您使用Firebase构建聊天应用程序。