- 在 Firebase 控制台中为您的应用程序设置规则以保护数据。例如,您可以为数据库设置以下规则:
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
- 在您的 Angular 应用程序中,使用 Firebase Auth 模块登录用户并获取令牌:
import { AngularFireAuth } from '@angular/fire/auth';
constructor(private afAuth: AngularFireAuth) {}
login() {
this.afAuth.signInWithEmailAndPassword(email, password)
.then((userCredential) => {
const token = userCredential.user.getIdToken();
// token can be passed to Firebase rules when reading/writing data
});
}
- 在读/写 Firebase 数据时,使用令牌来授权用户的访问权限:
import { AngularFireDatabase } from '@angular/fire/database';
constructor(
private db: AngularFireDatabase,
private afAuth: AngularFireAuth
) {}
writeData() {
this.afAuth.currentUser.getIdToken()
.then((token) => {
this.db.object('path/to/data').set({
some: 'data',
userId: this.afAuth.currentUser.uid
}, {
// pass token as auth
queryParams: {
auth: token
}
});
});
}
readData() {
this.afAuth.currentUser.getIdToken()
.then((token) => {
this.db.object('path/to/data').query({
// pass token as auth
queryParams: {
auth: token
}
}).valueChanges().subscribe((data) => {
console.log(data);
});
});
}