3

/寫訪問我有它運行靜態網站:限制火力地堡讀取到只有我自己

config = 
    apiKey: "HIDDEN" 
    authDomain: "HIDDEN" 
    databaseURL: "HIDDEN" 
    storageBucket: "" 

firebase.initializeApp(config) 

在瀏覽器(它編譯成javacript)與火力地堡的服務器進行身份驗證。

我困惑嗎?這是從瀏覽器使用Firebase進行身份驗證的有效方法嗎?我從他們的「web」教程中獲得了代碼,所以我認爲它是。

現在,我需要配置我的Firebase數據庫規則,以便我和只有我可以讀取&寫它。

我怎麼能做到這一點?這個例子足夠嗎?

這是允許讀/寫認證的用戶僅

{ 
    "rules": { 
    ".read": "auth != null", 
    ".write": "auth != null" 
    } 
} 

回答

8

firebase.initializeApp(config)不會對您進行身份驗證,它只是在Firebase服務器上標識您的項目。這是相當於你必須知道你的家庭住址才能知道下班後要去哪裏。瞭解地址是先決條件,但僅限於獲取訪問權限。

如果您想限制數據訪問「只有你」,這意味着你必須首先識別你自己的Firebase。這你用Firebase Authentication做。例如,要請用電子郵件+密碼,您會怎麼做:

firebase.auth().signInWithEmailAndPassword(email, password) 

閱讀documentation for email+password authentication爲全面步驟。

一旦你通過身份驗證,你會得到一個唯一的ID;一個所謂的uid。您可以在Firebase控制檯的「身份驗證」標籤中找到uid

the Firebase Auth console showing a user's information

有了這個uid您可以控制對數據的訪問(包括數據庫和存儲)。所以,如果你從控制檯複製您的uid並將其添加到您的安全規則,只有你(或某人誰知道你的電子郵件+密碼)可以訪問數據庫:

{ 
    "rules": { 
    ".read": "auth.uid == 'e836f712-4914-41df-aa80-5ade6b8b7874'", 
    ".write": "auth == 'e836f712-4914-41df-aa80-5ade6b8b7874'" 
    } 
} 

請注意,我說我自己的uid之一在這個片段中。就像知道您的API密鑰或數據庫URL不存在安全風險一樣,我也不知道我的uid。知道我是Frank van Puffelen,user:209103 Stack Overflow,並不意味着你可以冒充我。

+0

謝謝,弗蘭克,很高興知道您的團隊正在關注新手,我很高興能夠開始使用Firebase進行構建。 –

+0

我期待看到你建立Max! –

+1

我知道評論意思是說在這裏感謝,但@FrankvanPuffelen這個答案幫助了我這麼多!我一直在尋找這些基本信息,出於某種原因,基本信息總是從Firebase文檔中刪除。謝謝! – Adam

2

在你的問題的規則將允許任何身份驗證的用戶讀取和寫入到數據庫中的任何鍵給定的例子。如果你願意,爲發展宗旨,以配置單個用戶,並限制到只有該用戶訪問,你可以使用以下規則:

{ 
    "rules": { 
    ".read": "auth !== null && auth.uid === '<your-uid>'", 
    ".write": "auth !== null && auth.uid === '<your-uid>'" 
    } 
} 

哪裏<your-uid>是與您希望用戶用戶UID登錄 - 您可以在Firebase控制檯的Auth下找到它(如果您尚未這樣做,您也可以創建一個用戶)。

通常情況下,Firebase將進行配置,以便用戶可以創建帳戶,並使用更細的規則來爲用戶提供對數據庫特定部分的讀寫權限。