繁体   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