Benutzer authentifizieren sich auf der Clientseite mit Firebase SDK.
Auf der Serverseite gibt es NodeJS und das SDK ist ebenfalls installiert. Dieser Servercode funktioniert, weil ich die Datenbank verwenden kann:
var firebase = require("firebase/compat/app"); require("firebase/compat/database"); require("firebase/compat/auth"); const firebaseConfig = { apiKey: "Axxx4", authDomain: "movtxxxom", projectId: "moxxx2", storageBucket: "movxxom", messagingSenderId: "14xx9", appId: "1:1xxxea13c", measurementId: "GxxFL", databaseURL: "httpxxx/", }; // Initialize Firebase firebase.initializeApp(firebaseConfig);
Dieser Code funktioniert.
Dies ist eine (Fastify-)Route, über die ich Benutzerinformationen erhalten möchte:
fastify.get("/login-success", async (request, reply) => { // Return View const user = firebase.auth().currentUser; console.log(user); return reply.view("/templates/login-success.ejs", { text: "Log in success", }); });
Benutzervariablen sind immer leer.
Wie geht man mit diesem Problem richtig um?
Wie gehe ich allgemeiner mit dieser Situation um?
aannabeengineer 是对的。这是一个概念证明(在用户身份验证和检索信息后必须对服务器端代码进行调整)。
服务器:
前端:
是的,我现在在服务器端使用 firebase admin(“firebase”是服务器上的实例)。
为了验证用户服务器端,您需要生成 JWT 客户端,然后在服务器上验证它。 首先,在客户端生成IdTokenp>
接下来,将请求中的令牌发送到服务器。您可以为此使用承载身份验证(作为 HTTP 标头发送。授权:承载)
在服务器上,您可以使用任何 JWT 库来验证令牌。 如果您想使用 Firebase SDK,则必须使用正确的 SDK。 “firebase/compat/auth”适用于客户端。您需要 Firebase 管理 SDK, 以下链接介绍了如何使用 Firebase 管理员验证 ID 令牌SDK