Я довольно новичок в Firebase, и у меня возникают проблемы с моими правилами безопасности. У меня есть клиент android, который регистрирует или регистрирует нового пользователя. На первом входе в систему этого пользователя, я сохранить свои данные в firebase так:Правила Firebase - Не удается сохранить данные пользователя при первом входе в систему
public void onAuthenticated(AuthData authData) {
//Save user data to firebase
Map<String, Object> map = new HashMap<String, Object>();
map.put("provider", authData.getProvider());
ref.child("users").child(authData.getUid()).updateChildren(map);
}
(Это называется в onAuthenticated() при проверке подлинности пользователя)
Тем не менее, кажется, что мои правила безопасности не являются позволяя пользователю писать в базу данных, если их данные уже не сохранены. Мои правила заключаются в следующем:
{
"rules": {
"users":{
"$userid": {
".read": "auth.id == $userid && auth !== null",
".write": "auth.id == $userid && auth !== null"
}
}
}
}
Кроме того, если это важно, вот пример того, как выглядит данные, как, когда он на самом деле хранится:
Как мне изменить мои правила, чтобы позволить клиенту для записи пользовательских данных после его аутентификации на сервере?
EDIT: После некоторых испытаний выяснилось, что эти правила не позволяют пользователю ничего писать на свой пользовательский узел, даже если он уже существует.
Для фона, проверка на нуль не является необходимым в данном случае. Правила безопасности не будут выполняться, если к объекту auth обращаются, и это не объект. Но это не повредит, и может быть полезно при написании правил, подобных этому (где auth.uid предотвратит выполнение второй части правила): 'auth.uid === 'frank' || (auth === null && root.child ('foo'). val() === 'bar') ' – Kato
Oooh ... Мне нравится это' auth.uid === 'frank'' правило. Можем ли мы получить это, введенное в каждую Firebase там, пожалуйста? –