0

我正在使用firebase作爲web應用程序,其中包含Api密鑰和其他憑據的配置已打開。我已經編寫了防止寫入數據庫的規則,但是我無法阻止他們註冊,我已將某些域列入了白名單,但除了創建用戶時也可以訪問該域以外的其他域。我正在使用cordova將此web應用程序轉換爲android應用程序和ioS應用程序。有什麼辦法可以防止用戶註冊。Firebase Cofiguration Open - Web App

+0

如果您想限制用戶數量,您必須手動執行此操作。如果你想防止DOS攻擊。使用驗證碼將是一個好方法。 – rv7284

+0

配置文件是開放的,所以如果有人使用這個配置文件來不必要地添加用戶@ rv7284 – Prags

回答

1

所以,你想允許一些用戶註冊,但不是其他人?我還假設你想使用谷歌內置的註冊系統。

第一種方法

實現這一目標的最快的,但可能最難的方法是使用火力的功能添加到白名單一組用戶提前。 Firebase功能可以捕獲註冊請求,如果與您的白名單地址不匹配,則可以忽略它。

當然,您也可以使用它來執行各種其他功能,例如向其發送允許短時間註冊的請求。任何可能通過JavaScript。

否則,您將被禁止創建自己的登錄方法。

那,我認爲是防止他們註冊的唯一方法。

第二種方法

相反,如果你想允許註冊但不允許訪問數據庫,你應該能夠成立,這將只允許那些的UID編寫規則「AUTH =(UID)」 。

同樣的過程可以通過允許基於你的一組uid編寫和基於firebase功能來實現。

另一種方法是firebase遠程配置條件並達到類似的效果。 (但我不會建議這樣做,因爲它可以創建一個不安全的客戶端身份驗證,或者不必要的步驟來檢查身份驗證)。

我使用的是類似的東西,它允許完全訪問數據庫,但使用firebase功能來防止刪除。這種方法允許用戶有完全的訪問權限,但是我可以隨時改變他們寫,移動或刪除節點的能力。從本質上講,如果事實證明,Firebase函數方法最適合您的情況,我可以更新我的回覆以包含我的代碼中的示例。

第三種方法

一些火力的用戶轉而使用數據庫來存儲用戶和他們的憑證與他們的個人資料數據一起。因此,當用戶註冊時,它會將一個節點添加到數據庫中,通過簡單地移動它,刪除它或創建一個指示其權限的密鑰,可輕鬆接受或拒絕該節點。

祝你好運與firebase。它的功能通常可能會隱藏起來,很難找到。在YouTube上觀看完整的Google I/O演示文稿可能會很有用,這將詳細解釋其廣泛的演奏曲目。它可以找到here。我強烈建議這樣做,因爲它幫助我更好地理解了功能和(實話)我應該使用Firebase的所有方式(但不是)。

+0

感謝您的迴應,但我的問題是,如果任何人有我的配置文件,他們將能夠創建自己的網頁仿冒頁面,他們可以註冊,儘管他們沒有數據庫訪問會被規則阻止,但我想阻止來自其他域的註冊。 @Drei – Prags

+0

在身份驗證下,在登錄方法選項卡中,您可以更改授權域。 – Drei

+0

我也這樣做了,但它仍然發生在其他域@Drei – Prags

1

如果您需要絕對控制用戶註冊,我認爲您應該使用custom authentication。這樣,用戶將不會直接在您的Firebase實例上註冊,但您將爲註冊和登錄過程提供單獨的服務器API。

當用戶登錄(也是通過您的服務器API)時,您可以向其發送一個custom authentication token,用於驗證和訪問Firebase上的數據。您可以閱讀更多關於自定義身份驗證的信息here

您可以擁有一個運行註冊邏輯的小型NodeJS服務器。在那裏你可以禁止不需要的電子郵件。

Here是有關從您的服務器創建自定義身份驗證令牌的文檔。