我想為我的 firestore 資料庫創建一個規則,允許用戶根據他們傳遞的自定義 JWT 令牌訪問它。我的后端是在 .NET 中開發的,我正在使用 firebase 為其添加一些額外的“實時”功能。
每個用戶在登錄時從 API 獲得一個 JWT 令牌,我想知道如何將該令牌傳遞給 firestore 并創建一個規則,如果令牌有效,則允許用戶使用它進行讀/寫訪問
我正在努力解決的問題是能夠將任何資訊(身體除外)傳遞給 firestore。例如,在此代碼中,我會將 JWT 令牌放在何處作為標頭傳遞給 firebase 以及如何在 firebase 規則中訪問此標頭并對其進行解碼
正如您在下面看到的,我的資料庫目前沒有身份驗證。
發布資料的代碼:
void sendMessage({
String message,
String clientId,
String ptId,
bool isPt,
}) async {
try {
final messagesDoc = _db
.collection('pt-info')
.doc(ptId)
.collection('clients')
.doc(clientId)
.collection('messages');
await messagesDoc.add({
'message': message,
'dateTime': DateTime.now(),
'sentByPt': isPt
});
} catch (e) {
print(e);
}
}
Firestore 規則
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
我要做什么(我不知道如何在此處解碼 JWT 令牌或將其傳遞到此處,但這基本上是我想要做的)
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if JWT.decode(CUSTOM_TOKEN).isValid()
}
}
}
uj5u.com熱心網友回復:
Firestore 安全規則中唯一可用的資訊是:
- 請求作用的路徑。
- 更新的檔案資料(用于寫請求)。
- 發出請求的 Firebase 身份驗證用戶的身份驗證令牌。
除了這些選項之外,您無法將自定義資訊傳遞給 Firestore 安全規則。如果你想傳遞額外的資訊,它必須在這些地方之一。
最常見的是以自定義令牌(使用 Admin SDK 生成)或現有令牌中的自定義宣告的形式傳遞 Firebase 身份驗證令牌中的附加資訊。在這兩種情況中的任何一種情況下,用戶都必須使用自定義/自定義令牌登錄 Firebase 身份驗證,此時資訊將在request.auth.token.
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/394166.html
標籤:扑 镖 谷歌云firestore 火力基地安全
上一篇:Flutter:ListTile定位在影像上-引發例外-BoxConstraints強制無限寬度
下一篇:如何在顫振中并排兩個漸變
