#angular #typescript #firebase
#angular #typescript #firebase
Вопрос:
Я хочу, чтобы пользователь видел только свои собственные сообщения, и никто не должен получать доступ к его сообщениям. Аутентификация публикация уже возможна и работает. Но без ограничений firebase.
Для firebase я планирую использовать эти правила. Это нормально?
{
"rules": {
"notes": {
"$uid": {
".read": "auth != null amp;amp; auth.uid == $uid",
".write": "auth != null"
}
}
}
}
Поместить запрос в angular:
this.http
.put(
'https://_____.firebaseio.com/notes.json?auth=<ID_TOKEN>',
notes
)
Получить запрос в angular (здесь в полной функции)
loadNotes() {
return this.http
.get<Note[]>(
'https://______.firebaseio.com/notes.json?auth=<ID_TOKEN>'
)
.pipe(
map(notes => {
return notes.map(note => {
return {
...note
};
});
}),
tap(notes => {
this.noteService.setNotes(notes);
})
);
}
}
Я думаю, что наиболее важными моментами здесь являются ссылки на базу данных firebase и правила firebase.
Я действительно был бы признателен за помощь!! Спасибо.
Ответ №1:
Ваш put
вызов пытается выполнить запись /notes
, но ваши правила безопасности не предоставляют никому доступ на запись к этому узлу. Таким образом, правильная запись отклоняется.
Чтобы разрешить операцию записи, вам необходимо поместить данные в /notes/$uid
:
this.http
.put(
'https://_____.firebaseio.com/notes/uidOfUserInAuthToken.json?auth=<ID_TOKEN>',
notes
)
Здесь uidOfUserInAuthToken
должен соответствовать UID пользователя, которого ID_TOKEN
вы отправляете с запросом.
Комментарии:
1. Это уже выглядит великолепно! Но есть еще одна проблема: несмотря на то, что в консоли <ID_TOKEN> заменяется идентификатором пользователя, я все равно получаю сообщение об ошибке: не удалось проанализировать токен аутентификации. В чем проблема сейчас? Я действительно не знаю, чего может не хватать.