0

У меня этот сценарий, у нас есть пользователь, который посетил профиль другого пользователя, и он нажимает на кнопку follow. После того, как он следует за пользователем, мы хотим, чтобы он написал Firebase и добавил к подписчикам пользователя: {userA: true} ... глядя на правила. Я понимаю, что мы можем аутентифицировать пользователя, но как мы убеждаемся, как только он аутентифицируется, что он может только Вам необходимо войти в систему или зарегистрироваться. Вы должны сначала зарегистрироваться или войти на сайт под своим именем.Как избежать использования пользователем конкретной информации в Firebase?

Подходит ли аутентификация для пользователя userA, и мы можем удостовериться, что запись может равняться auth.userA только для userId или она генерируется случайным образом и не совпадает с основным пользователем, который мы используем в общем для пользователя?

Кроме того, если auth.userId можно получить из своих документов, мы также можем позвонить auth.username, чтобы захватить аутентифицированное имя пользователя, чтобы убедиться, что они не записывают somethign вне своего имени пользователя?

Ниже приведен пример структуры данных:

следующих пользователя идента Дата

Я пытаюсь иметь только пользователь иметь возможность написать свой идентификатор пользователя и имя пользователя в следующем.

Map<String, Object> payload = new HashMap<String, Object>(); 
payload.put("uid", "uniqueId1"); 
payload.put("some", "arbitrary"); 
payload.put("data", "here"); 
TokenGenerator tokenGenerator = new TokenGenerator("<YOUR_FIREBASE_SECRET>"); 
String token = tokenGenerator.createToken(payload); 

Нужно ли это «данные» или может быть «имя пользователя», «тестер»?

+0

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

ответ

1

Так это звучит, как вы хотите иметь такую ​​структуру:

followers 
    <uid> 
    <follower_uid>: true 

И вы хотите, чтобы позволить только пользователю follower_uid, чтобы записать значение.

Это можно сделать со следующими правилами безопасности.

{ 
    "rules": { 
    "followers": { 
     "$uid": { 
     "$follower_uid": { 
      ".write": "auth.uid == $follower_uid" 
     } 
     } 
    } 
    } 
} 

Я рекомендую вам прочитать Firebase documentation on security rules, которая охватывает эти и многие другие сценарии. Это немного читается, но стоит того.

+0

Спасибо, Frank, для настройки моих собственных дополнительных методов auth, хотя, я добавил некоторый код выше для примера, могу ли я запустить его так, как для payload.put («username», «testuser»). Затем вызовите auth.username для проверить? – Lion789