2017-03-24 78 views
0

我在nodejs(expressjs)中創建一個網站,該網站將使用火熱庫管理員驗證API來使用id-token-verification對用戶進行身份驗證。爲每個登錄用戶初始化管理員Firebase應用程序

此令牌將被保存到服務器會話,用於查詢實時數據庫將從服務器進行。

我的問題是關於限制的權限,該文件說,該databaseAuthVariableOverride應該用於使用模擬用戶自己uid

Taken from the admin auth docs:

如果你希望你的服務器來模擬像訪問用戶行爲作爲該用戶的Firebase實時數據庫,您應該先驗證並解碼該用戶的ID令牌。然後,利用databaseAuthVariableOverride選項來限制你的服務器

的特權,因此爲每個用戶:

admin.initializeApp({ 
    credential: admin.credential.cert(serviceAccount), 
    databaseURL: "https://databaseName.firebaseio.com", 
    databaseAuthVariableOverride: { 
    uid: userId1 
    } 
}, userId1) 

admin.initializeApp({ 
    credential: admin.credential.cert(serviceAccount), 
    databaseURL: "https://databaseName.firebaseio.com", 
    databaseAuthVariableOverride: { 
    uid: userId2 
    } 
}, userId2) 

難道是初始化一個新的firebaseApp對於被登錄的每個用戶是可行的,還是有一個標準的方式來處理多個用戶的限制特權?

回答

3

這不完全是如何管理SDK旨在使用。你當然可以通過這種方式來模擬用戶,但這不是最佳做法。

用戶應該通過客戶端讀取和寫入自己的數據。他們有安全規則,因爲你不能相信他們會按照你想要的規則來玩。

在服務器上,因爲您可以控制所有的邏輯,你並不需要模擬最終用戶,因爲你可以相信你自己的代碼會做正確的事與它讀取和寫入任何數據。

UID屬性是爲了實現權限的另一種類型的可以控制管理角色的暫時下降 - 而不是模擬最終用戶。該uid通常會在安全規則中進行硬編碼,該規則定義了該角色或服務的特權級別。更好的描述這是如何工作的can be found here。 (這是你引用的文檔中的「here」這個詞的鏈接。)

相關問題