RN Firebase 实时数据库身份验证令牌有效负载



Usingreact-native-firebase:4.3.x

我能够连接到 RealtimeDB,我们需要安全性,我们已经设置了规则

但是浏览文档,我找不到在连接到 firebase 时如何在哪里设置身份验证令牌有效负载。它所拥有的只是连接到数据库调用以下内容:

db = firebase.database();

没有参数或任何东西。我该用吗,firebase.auth()

简短回答:我们对Firebase RealtimeDB规则集的整个方法从一开始就是不正确的;我们在不了解Firebase Auth及其与RealtimeDB的关联的情况下完成了规则。我们有设置,规则仅基于 uid 和 RealtimeDB,在 RealtimeDB 上存储一些随机令牌,希望我们可以以某种方式将身份验证有效负载上的令牌传递给用户。

详细回答:如Firebase自己的数据库安全文档所述,数据库规则直接使用Firebase身份验证。

从那时起,从身份验证 RNFirebase.io 实现了自定义身份验证

客户端:

let postLogin = (userCredentials) => {
db = firebase.database();
//...do stuff
}
firebase
.auth()
.signInAndRetrieveDataWithCustomToken(token)
.then(postLogin);

Firebase 控制台:生成 JSON 格式的 Firebase 私钥和一些标识符值的 Project Settings -> Service Accounts -> Generate new private key. 。在我们的例子中,将其导入您在服务器端使用的任何库中kreait/firebase-php

不要启用匿名身份验证,这会破坏目的。

PHPusing kreait/firebase.php:

use KreaitFirebaseFactory;
use KreaitFirebaseServiceAccount;
$serviceAccount = ServiceAccount::fromJsonFile($pathToJson);
$firebase = (new Factory())
->withServiceAccount($serviceAccount)
->create();
$token = (string) $firebase->getAuth()->createCustomToken($uid, $payload)

我不需要了解客户端的有效负载。它在签名的 JWToken 中通过客户端传递。

相关内容

最新更新