Firebase實時數據庫安全規則中的auth.uid
和auth.token.sub
有什麼區別?Firebase實時數據庫安全規則中的auth.uid和auth.token.sub有什麼區別
我假設他們是相同的(用戶只有1個用戶ID),但他們有不同的描述,很想知道一個明確的答案。
auth.uid
:唯一的用戶ID,保證在所有提供者中唯一。
auth.token.sub
:用戶的Firebase UID。這在一個項目中是獨一無二的。
乾杯
Firebase實時數據庫安全規則中的auth.uid
和auth.token.sub
有什麼區別?Firebase實時數據庫安全規則中的auth.uid和auth.token.sub有什麼區別
我假設他們是相同的(用戶只有1個用戶ID),但他們有不同的描述,很想知道一個明確的答案。
auth.uid
:唯一的用戶ID,保證在所有提供者中唯一。
auth.token.sub
:用戶的Firebase UID。這在一個項目中是獨一無二的。
乾杯
它們完全一樣。提供了auth.uid
用於向後兼容(auth.token
並未用於存在於安全規則中)並且易於使用:sub
對於ID而言不是一個通常理解的術語,而uid
有點易於理解,而且您也不會必須潛入令牌內容。
auth.token.sub是在令牌的ID編碼。 Firebase Admin SDK具有用於驗證和解碼ID令牌的內置方法。如果所提供的ID令牌具有正確的格式,未過期並且被正確簽名,則該方法返回已解碼的ID令牌。您可以從解碼的令牌中獲取用戶或設備的uid。
所以這意味着在token.sub中你有用戶的uid。但是,如果沒有sdk,你不能看到真正的價值原因不是解碼。這是爲了安全。
如果你想使用它,你需要用例如verifyIdToken()
方法解碼。對Node.js的
例
// idToken comes from the client app (shown above)
admin.auth().verifyIdToken(idToken)
.then(function(decodedToken) {
var uid = decodedToken.uid;
// ...
}).catch(function(error) {
// Handle error
});
這裏https://firebase.google.com/docs/auth/admin/verify-id-tokens
希望鏈接是有幫助的。