簡體   English   中英

Firebase臨時禁止帳戶

[英]Firebase temporary ban account

我正在嘗試創建一個必須登錄/注冊的應用程序。 我可以通過為其帳戶創建一個名為“已禁用”的值並將該值設置為“是”來永久禁止用戶。 然后,我將在每次登錄時檢查該值是否為“是”,否則將無法登錄。 可以暫時禁止帳戶嗎? 我當時想保存禁令發生的當前時間,然后增加禁令的時間。 然后,在每次玩家登錄時檢查臨時禁令值(時間)是否大於當前時間,如果是,則仍然被禁止。 如果該值(時間)低於播放器,則不被禁止。 但是我認為他們可以在設備的設置中進行更改。

還有其他方法嗎?

您可以通過Firebase Admin SDK禁用用戶帳戶 但這不會自動注銷用戶。 這樣只會阻止他們再次登錄。

為了防止用戶進行未經授權的更改,您可能希望將禁用用戶的黑名單添加到數據庫中:

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

然后,您可以從安全規則中檢查以下列表

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

可能對您有用的想法:

要禁止用戶,請在數據庫中為該用戶創建一個條目,以將該用戶標記為已禁止,並帶有時間戳NOW + X

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

現在,每當用戶隨后登錄時,您都可以檢查該用戶是否被禁止,並立即嘗試刪除該條目。 如果失敗,則懲罰時間仍在運行。 如果成功,那么用戶可以使用您的應用程序:)

訣竅是使用Firebase規則限制可能的更改。

就像是:

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM