所以最近我正在做一个react js项目,在我开始搜索所有东西之前,我发现使用firebase和react的最佳方式是通过express,一切都很好,直到有人告诉我我使用错了,他解释说有一个firebase auth (我正在使用)和firebase admin sdk,第一个必须在客户端使用,第二个必须在服务器端使用。
基本上,我使用Axios将数据发送到express,然后运行我的firebase Authentication,然后响应我的客户端,这是错误的吗?下面是一个检查用户是否已登录的示例:
Server.js
const firebaseDb=require("firebase/database");
const firebaseAuth=require("firebase/auth");
const path = require('path');
const express= require("express");
var cors = require('cors');
const bodyParser = require("body-parser");
const app=express();
app.use(express.json());
app.use(cors());
app.use(bodyParser.urlencoded({extended: true}));
const db=firebaseDb.getDatabase();
const auth=firebaseAuth.getAuth();
app.get('/checkAuth',(req, res)=>{
const user=auth.currentUser;
if (user) {
// User is signed in.
return res.status(200).send("auth ok");
} else {
// User is signed out
return res.status(404).send("auth error");
}
});这个有用吗?还是应该直接在客户端实现防火墙?还是应该在我的服务器上使用?
在我的客户端使用防火墙会使我的应用程序变得脆弱吗??即使在看了几个小时的文件之后,我也很感激任何帮助我感到失落。
发布于 2022-07-03 09:20:06
在我的项目中集成firebase auth时使用的流程如下
中的服务器
服务器端的
serviceAccount = admin.initializeApp({凭证: admin.credential.cert(serviceAccount),});函数firebaseTokenVerification(req,res,next) { const authHeader =req.headers“授权”;const令牌= authHeader & authHeader.split(“")1;管理.auth() .verifyIdToken(令牌).then((响应) => { //标头中提供的令牌是有效的,如果它到达然后块next();}) .catch((e) => { //令牌无效)。返回res .status(403) .send(‘无效令牌’);};}
上面的代码被用作前端提供的firebase令牌的快速中间件,一旦经过验证,我确信前端提供的令牌是有效的,并且可以处理请求。
在前端,我使用firebase/auth库,在后端,我使用Firebase Admin
希望这能回答你的疑问。
https://stackoverflow.com/questions/72844990
复制相似问题