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”)代码>,它不工作。在经历了这么多之后,在重定向之前设置头似乎不起作用。那么你有什么建议吗?检查你是否正在做与我在答案中链接的示例相同的事情,或者此示例:。若你们认为你们是,但它不起作用,那个就和弗兰克一起提出一个新问题。弗兰克,请看一看并帮助我:?