我的团队正在从直接读写功能迁移到我们的移动和Web应用程序的Firebase RTDB,并从其迁移到更经典的服务器/客户端模型。
这样做,我想看看是否有一种机制可以通过我们的服务器API将用户Firebase身份验证令牌转发到对数据库的调用中。这样做的目的是使我的安全规则可以应用于用户请求的auth令牌,而无需编写层来管理用户数据访问,而不必依靠firebase来为我处理它。
答案 0 :(得分:1)
因此,您希望Firebase在用户访问数据之前进行检查。在这种情况下,您可以使用如下所示的firebase getIdToken
firebase.auth().currentUser.getIdToken(); // which returns promise.
将此令牌附加到http标头,然后在API调用中按如下所示检查令牌
const validateFirebaseIdToken = (request, response, next) => {
cors(request, response, () => {
if (!request.headers || !request.headers.authorization) {
return response.status(403).send("Sorry! You're not authorized to access this url");
}
const token = request.headers.authorization.split('Bearer ')[1];
return firebase.auth().verifyIdToken(token).then(decodedId => {
request.user = {};
request.user.uid = decodedId.uid;
return next();
}).catch(error => {
console.log(error);
return response.status(403).send("Sorry! You're not authorized to access this url");
});
});
}
这是您需要通过API调用检查Firebase ID令牌的方式。希望这能给您一个想法。随时问您是否有任何疑问