gpt4 book ai didi

javascript - 使用 NodeJS 的 Firebase 身份验证

转载 作者:搜寻专家 更新时间:2023-10-31 22:56:18 24 4
gpt4 key购买 nike

到目前为止,我一直在使用 Mongodb 和 Express。我的整个身份验证是通过检查 req.user 对象完成的。据我所知,Firebase 身份验证主要是在前端完成的。如何让 req.user 在后端使用 Firebase?我看到了几个tutorials ,但他们只是展示了几种方法并继续进行。我的意思是询问更多有关逻辑的信息,但一些代码示例可能会有所帮助。

最佳答案

Firebase authentication is mostly done in the front end

正确。使用 Firebase 提供的 SDK 时,用户身份验证完全在客户端完成。

但是,如果您需要执行一些特殊的身份验证,例如与 LDAP/AD 集成或其他一些企业恶作剧,那么您需要执行 custom token creation客户端 SDK 将用于对用户进行身份验证。

How can I get req.user to work with Firebase in the back end?

这是需要自己实现的。流程客户端会是这样的:

  1. 用户在客户端执行身份验证。
  2. 当用户尝试访问您的 Express API 时,您需要从 localstorage 检索 token 并将其与您的 API 请求一起发送。

假设您在请求 header 上附加了 token :FIREBASE_AUTH_TOKEN: abc。参见 Firebase retrieve the user data stored in local storage as firebase:authUser:

所以在服务器端,使用Firebase Admin SDK ,您将检索该 token 并通过 verifyIdToken 验证它.下面是中间件的快速示例:

const {auth} = require('firebase-admin');
const authService = auth();

exports.requiresAuth = async (req, res, next) => {
const idToken = req.header('FIREBASE_AUTH_TOKEN');

// https://firebase.google.com/docs/reference/admin/node/admin.auth.DecodedIdToken
let decodedIdToken;

try {
decodedIdToken = await authService.verifyIdToken(idToken);
} catch (error) {
next(error);
return;
}

req.user = decodedIdToken;
next();
}

然后你可以像这样使用这个中间件:

const express = require('express');
const router = express.Router();
const {requiresLogin} = require('./my-middleware.js');

router.get('/example', requiresLogin, async (req, res) => {
console.log(req.user)
})

我希望这能让您知道该怎么做。我有一段时间没有使用 Firebase,上面的信息是我通过查看文档收集的。

关于javascript - 使用 NodeJS 的 Firebase 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50370925/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com