如何检查用户是否在Firebase和Express / Node.js中进行了身份验证?

时间:2018-06-01 12:45:44

标签: javascript node.js firebase express firebase-authentication

如果我有一个只能由经过身份验证的用户访问的页面,我该如何检查用户是否经过身份验证?

我尝试使用(firebase.auth().currentUser !== null),但收到错误消息:TypeError: firebase.auth is not a function

我有以下配置:

const express = require('express'),
      firebase = require('firebase'),
      app = express();

app.use(express.static("/public"));

var config = {
   apiKey: "xxxx",
   authDomain: "xxxx",
   databaseURL: "xxxx",
   projectId: "xxxx",
   storageBucket: "xxxx",
   messagingSenderId: "xxxx"
};

firebase.initializeApp(config); 

app.get("/dashboard", (request, response) => {
   if (firebase.auth().currentUser !== null){
       response.render("dashboard.ejs")
   }
   else{
       response.render("login.ejs");
   }
});

1 个答案:

答案 0 :(得分:3)

您的代码位于Express应用中,这意味着它在服务器上运行。您正在使用的Firebase SDK旨在用于客户端设备,并且在您的Express环境中无法正常运行。没有"当前用户的概念"在服务器上。当然,每个请求都可以将用户ID传递给服务器,但服务器本身是无状态的。

在Express服务器中,您将要使用Firebase Admin SDK。看看这个Cloud Functions sample on how to build an authenticated endpoint