用户删除时,Firebase身份验证未撤消?

fre*_*aso 4 firebase firebase-security

我遇到了使用电子邮件/密码登录Firebase简单登录的奇怪行为:如果我使用现有用户帐户登录,我可以写入Firebase ref(即$ root/list/$ item).如果没有,我没有按预期的写访问权限(Firebase规则似乎没问题),但是如果客户端已登录,并且我同时从Firebase Forge(Auth页面)删除用户,则连接的客户端仍然可以写入访问权限. Firebase参考!它是设计还是错误?谢谢.

这是规则:

{
  "rules": {
    ".read": true,
    "list": {
      "$item": {
        ".write": "auth != null && newData.child('author').val() == auth.id",
        ".validate": "newData.hasChildren(['author', 'content'])",
        "author": {
          ".validate": "newData.val() == auth.id"
        },
        "content": {
          ".validate": "newData.isString()"
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Kat*_*ato 10

简短回答:按设计,或更准确,在这种情况下不适用.

在身份验证期间,FirebaseSimpleLogin会生成令牌.将令牌提供给客户端后,它将一直有效,直到它过期.因此,当您在简单登录中删除用户帐户时,这不会以某种方式转到客户端的计算机并删除令牌.这是一个非常标准的auth模型,令牌上的到期长度(在Forge中可配置)是安全性的关键约束.

如果要立即撤消登录,则简单登录不是该作业的正确工具.您将需要使用自定义登录并生成自己的令牌.有关可撤销令牌的一些很好的讨论,所以我会将你推迟到那些,因为这不在你的问题范围之内.