0

我試圖創建一個應用程序,你就必須先登錄/註冊。我可以通過爲他的賬戶創建一個名爲「Disabled」的值來永久禁止用戶,並將此值設置爲「Yes」。如果此值爲「是」,那麼每次登錄時都會檢查一次,如果超過,他將無法登錄。 是否可以暫時禁止帳戶?我當時想保存當前禁令發生的時間,然後加上禁令的時間。如果臨時禁止值(時間)高於當前時間,則每次檢查玩家是否登錄時,如果是這樣,玩家仍然被禁止。如果該值(時間)低於玩家未被禁配。但我認爲他們可以在設備的設置中改變這一點。火力地堡臨時禁令賬號

有沒有其他方法可以做到這一點?

+0

你用什麼火力地堡的功能?這聽起來像身份驗證和數據庫,但你能明確證實嗎? –

+0

@FrankvanPuffelen是的,我使用的身份驗證登錄和保存所有值登記和數據庫。 (我也使用存儲的個人資料照片)。 –

回答

2

也許一個想法,這可能會爲你工作:

要禁止用戶,在數據庫中創建一個條目,以TH E用戶以標誌爲禁止使用時間戳現在,用戶+ X

{ "users" : { 
    "bad_user" : { 
     "banned" : { 
      "until" : 123456 // timestamp NOW + X 
     } 
    } 
    } 
} 

現在,只要在之後的用戶登錄,您請檢查是否用戶被禁止和立即嘗試刪除該條目。如果失敗,處罰時間仍在繼續。如果成功,以及隨後用戶可以使用你的應用程序:)

的技巧是使用火力規則來限制可能發生的變化。

類似:

{ 
    "rules" : { 
    "users" : { 
     "$uid" : { 
     // ... 
     "banned" : { 
      .write : "(!newData && now < data.child('until').val())" 
.... 

請注意 - 這些不工作的規則,但應有助於弄清楚。

+0

感謝您的幫助! –

3

你可以disable a user's account through the Firebase Admin SDK。但是,這不會自動註銷用戶。它會阻止他們再次登錄。

爲了防止用戶進行未經授權的更改,你可能會要禁用用戶的黑名單添加到您的數據庫:

/bannedUsers 
    uid1: <banned-until-timestamp> 
    uid2: <banned-until-timestamp> 
    uid3: <banned-until-timestamp> 

然後你可以check this list from your security rules

".write": "!root.child('bannedUsers').child(auth.uid).exists() || 
      root.child('bannedUsers').child(auth.uid).val() < now" 
+0

感謝您的幫助! –