# #javascript #ionic-framework #google-cloud-firestore #firebase-security #angularfire2
Вопрос:
Когда я пытаюсь получить доступ к базе данных после успешного входа в систему пользователя, я получаю ошибку
разрешение, указанное в /профили/N97wiXBCMxhB06qQXJ2Bvhcjnts1: У клиента нет разрешения на доступ к нужным данным.
Поскольку я только что аутентифицировал пользователя, я не понимаю, как у пользователя не будет разрешения. Еще одно странное поведение заключается в том, что оно срабатывает во второй раз, когда я нажимаю кнопку «Войти», которая вызывает функцию signIn(singInForm).
вход.страница.ts
signIn(signInForm) {
this.authService.signInWithEmailAndPassword(signInForm.email, signInForm.password)
.then(res => {
const userID = res.user.uid;
this.fbBackendService.fetchUserProfile(userID).subscribe(userProfile => {
// DO SOMETHING using the userID
}, error => {
// DO SOMETHING
});
}).catch(error => {
// DO SOMETHING
});
}
fb-серверная часть.сервис.ts
constructor(private db: AngularFireDatabase) { }
fetchUserProfile(userID): Observable<IUserProfile> {
return this.db.object(`/profiles/${userID}`)
.valueChanges()
.pipe((take(1), map((response: any) => response as IUserProfile)));
}
Вот соответствующий набор правил:
{
"rules": {
".write": false,
".read": false,
"profiles": {
"$uid": {
".read": "auth.uid === $uid",
".write": "auth.uid === $uid",
".indexOn": "company_id"
}
}
}
}
Комментарии:
1. Какие правила установлены для вашей базы данных? Можете ли вы добавить эту информацию к своему вопросу?
2. @RichTillis Я добавил набор правил к вопросу. Спасибо.
3. Я воссоздал ошибку в точности так, как вы ее описали. Ошибка входа в систему в первый раз, но во второй раз это удается. Я не уверен, является ли это правилом, или обещанием, или сочетанием того и другого. Я буду продолжать заниматься этим вопросом.
Ответ №1:
Вы можете попробовать понизить рейтинг до firebase 8.3.0. Похоже, возникла проблема с более новыми версиями.