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

Javascript 如何检查用户是否在Firebase和Express/Node.js中经过身份验证?,javascript,node.js,firebase,express,firebase-authentication,Javascript,Node.js,Firebase,Express,Firebase Authentication,如果我有一个只能由经过身份验证的用户访问的页面,如何检查用户是否经过身份验证 我尝试使用(firebase.auth().currentUser!==null),但我收到一个错误,错误是:TypeError:firebase.auth不是函数 我有以下配置: const express = require('express'), firebase = require('firebase'), app = express(); app.use(express.static

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

我尝试使用
(firebase.auth().currentUser!==null)
,但我收到一个错误,错误是:
TypeError:firebase.auth不是函数

我有以下配置:

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");
   }
});

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


在Express服务器中,您需要使用Firebase Admin SDK。看看这个。

可能是重复的我以前见过,在那里尝试过解决方案,但没有运气。我的问题可能是,调用
firebase.auth().currentUser
更好吗?还是有更好的方法通过AdminSDK访问它?假设我在登录页面。我在正文中发送了一个带有用户名和密码的POST请求。现在,由于我无法使用我的
app.post(“/login”)
express应用程序中通常的
firebase.auth().signwithEmailandPassword(email,password)
登录,那么我应该如何登录?不要发送带有用户名和密码的post请求。发送ID令牌并验证是否如示例或此处所示:Frank,我正在按照您的建议执行。按照您建议的指导原则,当我使用
idToken
/login
发送帖子时,将标题设置为:
response.header(“授权”、“承载人”+idToken”),它不工作。在经历了这么多之后,在重定向之前设置头似乎不起作用。那么你有什么建议吗?检查你是否正在做与我在答案中链接的示例相同的事情,或者此示例:。若你们认为你们是,但它不起作用,那个就和弗兰克一起提出一个新问题。弗兰克,请看一看并帮助我:?