如何检查用户是不是在 Firebase 和 Express/Node.js 中经过身份验证?
Posted
技术标签:
【中文标题】如何检查用户是不是在 Firebase 和 Express/Node.js 中经过身份验证?【英文标题】:How to check if user is authenticated in Firebase and Express/Node.js?如何检查用户是否在 Firebase 和 Express/Node.js 中经过身份验证? 【发布时间】:2018-11-11 14:47:05 【问题描述】:如果我有一个页面只能由经过身份验证的用户访问,我如何检查用户是否经过身份验证?
我尝试使用(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");
);
【问题讨论】:
firebase.auth is not a function的可能重复 我以前见过这个,在那里尝试了解决方案,但没有运气。我的问题可能是什么情况,是调用firebase.auth().currentUser
更好还是有更好的方法通过管理 SDK 访问它?
【参考方案1】:
您的代码位于 Express 应用程序中,这意味着它在服务器上运行。您使用的 Firebase SDK 适用于客户端设备,无法在您的 Express 环境中正常运行。服务器上没有“当前用户”的概念。当然,每个请求都可以将用户 ID 传递给服务器,但服务器本身是无状态的。
在您的 Express 服务器中,您需要使用 Firebase Admin SDK。看看这个Cloud Functions sample on how to build an authenticated endpoint。
【讨论】:
噗,想象一下我在登录页面。我在正文中发送带有用户名和密码的 POST 请求。现在,由于我无法在我的app.post("/login")
express 应用中使用通常的firebase.auth().signInWithEmailAndPassword(email, password)
登录,那我应该如何登录?
不要发送带有用户名和密码的帖子请求。发送 ID 令牌并验证 ,如示例所示或此处:firebase.google.com/docs/auth/admin/verify-id-tokens
弗兰克,我正在按照你的建议做。按照您建议的指导方针,当我使用idToken
向/login
发送帖子并像这样设置标题:response.header("Authorization" , "Bearer " + idToken);
时,它不起作用。经过 SO 之后,似乎在重定向之前设置标头不起作用。那你有什么建议吗?
检查您是否与我在答案中链接的示例或此示例中的示例相同:github.com/firebase/functions-samples/tree/master/…。如果您认为自己是,但它不起作用,请使用minimal, complete code that reproduces the problem 提出一个新问题。
弗兰克,请看一下并帮助我:***.com/questions/50900309/…?以上是关于如何检查用户是不是在 Firebase 和 Express/Node.js 中经过身份验证?的主要内容,如果未能解决你的问题,请参考以下文章
如何检查用户是不是刚刚在 Firebase 中首次登录 Google
如何检查用户是不是在客户端使用 Firebase 登录? [关闭]
当用户在flutter中使用otp方法登录时,如何检查用户详细信息是不是已经存在于firebase中? [复制]
如何在 Firebase Auth 中检查用户是不是通过 Facebook 登录 [重复]