Имя FirebaseUser в анонимной и телефонной аутентификации - PullRequest
0 голосов
/ 08 октября 2018

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

match /admin/identity {
    allow write : if false;
    allow read : if request.auth.token.name == resource.data.name;
}

Если пользователь заявляет, что он является администратором, после того, как он аутентифицировал его с помощью телефона илианонимно обновляю профиль FirebaseUser с указанным именем, чтобы объект содержал отображаемое имя, действующее как код восстановления:

UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
        .setDisplayName("ABCDEFJHIJK")
        .build();
mUser.updateProfile(profileUpdates)
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                //try get document, if success the user is the actual admin, if we get error code ACCESS_DENIED then the code is incorrect, else then another error occured retry. 
                }
            }
        });

При попытке запроса request.auth.token.name не содержитлюбые действительные строковые данные, а затем правило отклоняет запрос get () для всех запросов.Симулятор на вкладке безопасности консоли Firestore, кажется, также не содержит имя в полезной нагрузке запроса, которое появляется при телефонной и анонимной аутентификации, в документации ничего нет, насколько мне известно, что ясно говорится, что некоторые поля данных аутентификации принимаются во внимание толькодля некоторых провайдеров аутентификации, но не для других.

Это преднамеренное поведение в firebase или я что-то упустил?Какие альтернативы у меня есть, чтобы выполнить политику восстановления?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...