10

メール/パスワードを使用した Firebase シンプル ログインの奇妙な動作に遭遇しました。既存のユーザー アカウントでログインすると、Firebase ref (つまり $root/list/$item) に書き込むことができます。そうでない場合、期待どおりに書き込みアクセス権がありません (Firebase ルールは問題ないようです)。ただし、クライアントがログインしていて、その間に Firebase Forge (Auth ページ) からユーザーを削除した場合、接続されたクライアントはまだ書き込みアクセス権を持っていますFirebase ref! それは仕様によるものですか、それともバグですか?ありがとう。

ルールは次のとおりです。

{
  "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()"
        }
      }
    }
  }
}
4

1 に答える 1

14

短い答え: 設計上、またはより正確には、この場合は適用されません。

認証中、FirebaseSimpleLogin はトークンを生成します。クライアントに渡されたトークンは、有効期限が切れるまで有効です。したがって、単純なログインでユーザー アカウントを削除しても、クライアントのマシンにアクセスしてトークンを削除することはありません。これは非常に標準的な認証モデルであり、トークンの有効期限 (Forge で構成可能) がセキュリティの重要な制約です。

ログインをすぐに取り消したい場合、単純なログインは適切なツールではありません。カスタム ログインを使用して、独自のトークンを生成する必要があります。reokable tokens に関するいくつかの素晴らしい議論があるので、それはあなたの質問の範囲外であるため、それらに任せます。

于 2013-10-15T14:56:12.053 に答える