1

Firebase Authでアプリケーションを作成していますが、削除するときやアカウントを無効にするときにsignOut()を手動で行う必要があります(ユーザーのリロードでこれを制御します) 、私はしない場合、ユーザーはデータをアップロードし続けることができます。アプリコードなしでこれを修正する方法はありますか?アカウントを削除してもユーザーはログインしています

Firebaseルール

{ 
    "rules": { 
    "users": { 
     "$uid": { 
     ".read": "auth != null && auth.uid == $uid", 
     ".write": "auth != null && auth.uid == $uid" 
     } 
    } 
    } 
} 

アプリケーションコード - トークンが鋳造されたとき、私はそれ

if(user != null) user.reload().addOnCompleteListener(this, new OnCompleteListener<Void>() { 
      @Override 
      public void onComplete(@NonNull Task<Void> task) { 
       if(!task.isSuccessful()) { 
        String exc = task.getException().getMessage(); 
        Log.e("FireBaseUser", exc); 
        auth.signOut(); 
       } 
      } 
}); 

答えて

2

を検出する方法は、それが有効期限のタイムスタンプを取得します。これは本質的に言う: "このトークンの情報は有効になるまで..."。ユーザーを削除しても、既存のトークンは無効になりません。

最新のFirebase Authentication SDKs以降、トークンは1時間有効です。したがって、最大で1時間後にトークンが期限切れとなり、削除されたユーザーがトークンを更新することは不可能になります。

これはあなたのアプリケーションのために十分でない場合、あなたは(管理者のみがアクセスできるセクションの)データベースで削除されたユーザーをマークし、アプリケーションにロジックを追加することができます。

/deletedUsers 
    209103: true 
    37370493: true 

あなたが、その後することができますsecurity rulesで、削除されていないユーザーだけがデータにアクセスできることを確認してください:

".read": "!root.child('deletedUsers').child(auth.uid).exists()" 
+0

ありがとうございます。 –

関連する問題