Как я могу установить управление доступом на основе ролей в Android Firebase

#android #firebase-realtime-database

#Android #firebase-realtime-database

Вопрос:

Я использую fire base, и я хочу разделить администратора и пользователей, и я хочу, чтобы администратор был направлен на определенное действие, а пользователь — на другое. Как я могу это выполнить. Я пробовал использовать метод аутентификации, но он не работает.

 @Override
public void onComplete(@NonNull Task<AuthResult> task) {
    progBar.setVisibility(View.GONE);
    if (task.isSuccessful()) {
        startActivity(new Intent(getApplicationContext(), Admin.class))
    } else {

    }
  

Комментарии:

1. Из вашего вопроса мне непонятно, как вы различаете пользователей с правами администратора и пользователей, не являющихся администраторами. Вам нужно будет выяснить, как это сделать, прежде чем вы сможете написать какой-либо эффективный код.

2. Вот что я выясняю, как различать администратора и не-администратора.

3. Аутентификация Firebase не имеет встроенной концепции пользователей-администраторов. Если вам это нужно, вам придется самостоятельно создать его поверх Firebase.

4. У меня сложилось впечатление, что в Firebase Auth обычно используются пользовательские утверждения для пометки пользователей с правами администратора. @FrankvanPuffelen

5. Да, обычно вы отмечаете администраторов пользовательским утверждением в их профиле, поскольку статус администратора является относительно стабильным состоянием (когда вы можете справиться с задержкой распространения). Другие членства в группах обычно обрабатываются путем их хранения в базе данных (Cloud Firestore или база данных реального времени).

Ответ №1:

Аутентификация Firebase не имеет встроенной концепции пользователей-администраторов. Если вам это нужно, вам придется самостоятельно создать его поверх Firebase.

Типичным способом сделать это было бы добавить пользовательское утверждение в профиль пользователя, когда этот пользователь является администратором. Вы можете сделать это с помощью Firebase Admin SDK с помощью чего-то такого простого, как:

 admin.auth().setCustomUserClaims(uid, {admin: true})
  

Но обратите внимание, что этот Admin SDK предназначен только для использования в доверенных средах, таких как ваша машина разработки, сервер, которым вы управляете, или облачные функции. В противном случае любой может пометить себя как администратора вашего приложения с помощью приведенного выше кода.

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

Комментарии:

1. я хочу перенаправить администратора на определенную активность, где администратор будет добавлять или удалять данные других пользователей. и обычные пользователи должны быть направлены на другую активность.

2. Описанный выше подход позволит вам это сделать. Проверьте ссылку о чтении заявки на клиенте для примера кода.