1

Я создаю приложение с Firebase Auth, но когда я удаляю или когда отключу учетную запись, мне нужно сделать signOut() вручную (я управляю этим при перезагрузке пользователя) , если я этого не сделаю, пользователь может продолжать загружать данные. Как я могу исправить это без кода приложения?Пользователь сохраняет логин, даже если я удалю учетную запись

Firebase правила

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

App Code - Как обнаружить

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 токены действительны только в течение одного часа. Таким образом, не более чем через час токен истечет, и удаленный пользователь не сможет его обновить.

Если этого не достаточно для вашего приложения, вы можете добавить логику приложения, которая отмечает удаленные пользователи в базе данных (в разделе, только администратор может получить доступ):

/deletedUsers 
    209103: true 
    37370493: true 

Вы можете затем в вашем security rules подтвердите, что доступ к данным могут получить только не удаленные пользователи:

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

Большое спасибо, он работает отлично. –

Смежные вопросы