【问题标题】:Firebase temporary ban accountFirebase 临时封禁帐户
【发布时间】:2016-11-18 17:08:14
【问题描述】:

我正在尝试创建一个您必须登录/注册的应用程序。我可以通过为他的帐户创建一个名为“已禁用”的值并将此值设置为“是”来永久禁止用户。如果这个值为是,我会在他每次登录时检查,如果是,他将无法登录。 可以暂时封禁账号吗?我正在考虑保存禁令发生的当前时间,然后添加禁令的时间量。然后在玩家每次登录时检查临时ban值(时间)是否高于当前时间,如果是则玩家仍然被ban。如果值(时间)低于玩家被解禁。但我认为他们可以在设备的设置中更改这一点。

还有其他方法吗?

【问题讨论】:

  • 您使用哪些 Firebase 功能?听起来像是身份验证和数据库,但你能明确地确认一下吗?
  • @FrankvanPuffelen 是的,我使用身份验证登录和注册,使用数据库保存所有值。 (我也在使用存储来存储个人资料照片)。

标签: ios swift firebase firebase-realtime-database firebase-authentication


【解决方案1】:

也许一个对你有用的想法:

要禁止用户,请在您的数据库中为该用户创建一个条目,以使用时间戳 NOW + X 将该用户标记为被禁止

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

现在,每当用户随后登录时,您都会检查该用户是否被禁止并立即尝试删除该条目。如果失败,处罚时间仍在运行。如果成功,那么用户就可以使用你的应用了:)

诀窍是使用 Firebase 规则来限制可能的更改。

类似:

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

请注意 - 这些不是工作规则,但应该有助于弄清楚。

【讨论】:

  • 感谢您的帮助!
【解决方案2】:

您可以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"

【讨论】:

  • 感谢您的帮助!
猜你喜欢
  • 2021-12-04
  • 2014-06-10
  • 1970-01-01
  • 2011-01-29
  • 2018-07-21
  • 2017-03-07
  • 1970-01-01
  • 2021-12-12
  • 1970-01-01
相关资源
最近更新 更多