【发布时间】:2021-01-28 22:46:09
【问题描述】:
我试图限制只允许用户读取他发布到 firebase 的数据。 身份验证已到位。发布、读取和删除数据只是工作
但尚未为 firebase 数据库设置任何真正的规则。
我试图改变这个:
{
"rules": {
"users": {
"$uid": {
".read": "auth != null && auth.uid == $uid"
}
}
}
}
这给了我一个 401 错误(未经授权)。现在我不确定问题可能是什么。我是否可能需要将 uid 显式添加到数据发送中? 所以firebase可以尝试匹配来自post和auth.uid的uid。
但我觉得这不足以保护数据。
编辑: 我正在使用的一些代码:
data.service.ts
storeNotes() {
const notes = this.noteService.getNotes();
this.http
.put(
'https://XXXXXXX.firebaseio.com/notes.json',
notes
)
.subscribe(response => {
console.log(response);
});
}
note.service.ts
private notes: Note[] = [];
getNotes() {
return this.notes.slice();
}
note.model.ts
export class Note {
public userName: string;
public name: string;
public description: string;
constructor(userName: string, name: string, desc: string) {
this.userName = userName;
this.name = name;
this.description = desc;
}
}
我现在还没有发布身份验证数据,因为我不认为它们应该在这里相关。还是我错了?
【问题讨论】:
-
您标记为
google-cloud-firestore,但您显示的安全性适用于 Firebase 实时数据库。虽然这两个数据库都是 Firebase 的一部分,但它们是完全独立的,一个的安全规则不适用于另一个。如果您使用的是 Cloud Firestore,请务必为该数据库设置正确的规则。 -
您还应该显示查询受这些规则影响的数据库的应用代码。
-
@FrankvanPuffelen 好的,我在那里看到了我的错误。谢谢!
-
@DougStevenson 就是这么做的。
标签: typescript firebase firebase-realtime-database firebase-security