2017-09-28 70 views
0

我正在使用Firebase的Cloud Function。當我使用admin.database().ref時,所有應用於數據庫的規則都被忽略。有了管理員,我可以做任何事情。要清楚:如何使firebase數據庫規則適用於admin.database()。ref(雲功能)

我有一個實時數據庫有一套規則,如;名稱必須是字符串並且長度> = 50,...

它在使用SDK時起作用,所有無效數據都將被拒絕。但是當我開始使用firebase雲端功能(通過提供一組https端點來減少客戶端工作)時,它不再起作用。

所以,我想知道是否有任何方法可以使它工作?我在想:

  1. 找到替換爲admin.database()(接過一看就 event.data.ref已經但這並不在我的情況下工作 - HTTP請求)
  2. 驗證雲功能(不是很好)數據

你能給我一些提示/線索嗎?

回答

1

這是Firebase Admin SDK的預期默認行爲:代碼使用管理權限訪問數據庫。

如果您想限制代碼的功能,您可以將其初始化爲以特定的UID運行。從Authenticate with limited privileges的文檔:

爲了更好地控制Firebase應用實例可以訪問的資源,請在安全規則中使用唯一標識符來表示您的服務。

...

然後,您的服務器上,當你初始化火力地堡的應用程序,使用databaseAuthVariableOverride選項覆蓋數據庫規則中使用auth對象。在此自定義身份驗證對象中,將uid字段設置爲您在安全規則中用於表示服務的標識符。

// Initialize the app with a custom auth variable, limiting the server's access 
admin.initializeApp({ 
    credential: admin.credential.cert(serviceAccount), 
    databaseURL: "https://databaseName.firebaseio.com", 
    databaseAuthVariableOverride: { 
    uid: "my-service-worker" 
    } 
}); 

請參閱完整的示例鏈接的文檔。

相關問題