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

rgo*_*alv 3 javascript node.js express firebase 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");
   }
});
Run Code Online (Sandbox Code Playgroud)

Fra*_*len 7

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

在您的Express服务器中,您将要使用Firebase Admin SDK。查看此Cloud Functions示例,了解如何构建经过身份验证的端点