[英]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.