Angular 使用 Firebase - 应用检查后权限缺失或不足
Angular with Firebase - missing or insufficient permissions after app check
我在 angular 应用程序中使用 angularfire 与 firestore 交互。不幸的是,之后
我在 firebase 控制台中设置了应用程序检查,在第一次与 firestore 交互后,我在我的网络浏览器的控制台中得到了 ERROR FirebaseError: Missing or insufficient permissions.
(请参阅下面的组件),这里有一些对您有用的信息,我从我的票中复制了这些信息在 angularfire 仓库中。
版本信息
Angular:
@angular-devkit/architect 0.1200.5
@angular-devkit/build-angular 12.2.13
@angular-devkit/core 12.2.13
@angular-devkit/schematics 12.2.13
@schematics/angular 12.2.13
RXJS 6.6.7
打字稿 4.3.5
Firebase:
9.19.0
Angular火:
7.2.0
其他(例如Ionic/Cordova、Node、浏览器、操作系统):
节点:16.13.0
如何重现这些条件
在我的组件中:
constructor(
private firestore: AngularFirestore,
) {}
ngOnInit(): void {
this.firestore
.collection('users')
.snapshotChanges()
.subscribe((documents) => {
this.userDocuments = documents;
})
设置和重现步骤
我在 firebase 控制台的项目下创建了一个 firebase web 应用程序。在应用程序检查选项卡中,我将 recaptcha 中的网站密码粘贴到必填字段中,现在看起来像这样:
在我的app.module.ts
imports: [
..
AngularFireModule.initializeApp(environment.firebase),
// // AppCheckModule,
provideFirebaseApp(() => initializeApp(environment.firebase)),
environment.useEmulators
? [AppCheckModule]
: provideAppCheck(() => {
const provider = new ReCaptchaV3Provider(environment.recaptcha);
return initializeAppCheck(getApp(), {
provider,
isTokenAutoRefreshEnabled: true,
});
}),
],
在 enviroment.ts
中,我设置了来自 recaptcha 的密钥。此外,环境生产密钥设置为 true,因此 isDevMode()
returns false。有一个问题,否则 recaptcha 需要调试令牌。
示例数据和安全规则
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth.uid != null;
}
}
}
调试输出
ERROR FirebaseError: Missing or insufficient permissions.
有人可以给我建议如何继续吗?
直到几天前发布的 JS SDK 9.6 才添加了适用于 Firestore 的 AppCheck。它现在对我有用
看这里:
https://firebase.google.com/support/release-notes/js
我在 angular 应用程序中使用 angularfire 与 firestore 交互。不幸的是,之后
我在 firebase 控制台中设置了应用程序检查,在第一次与 firestore 交互后,我在我的网络浏览器的控制台中得到了 ERROR FirebaseError: Missing or insufficient permissions.
(请参阅下面的组件),这里有一些对您有用的信息,我从我的票中复制了这些信息在 angularfire 仓库中。
版本信息
Angular:
@angular-devkit/architect 0.1200.5 @angular-devkit/build-angular 12.2.13 @angular-devkit/core 12.2.13 @angular-devkit/schematics 12.2.13 @schematics/angular 12.2.13 RXJS 6.6.7 打字稿 4.3.5
Firebase:
9.19.0
Angular火:
7.2.0
其他(例如Ionic/Cordova、Node、浏览器、操作系统):
节点:16.13.0
如何重现这些条件
在我的组件中:
constructor(
private firestore: AngularFirestore,
) {}
ngOnInit(): void {
this.firestore
.collection('users')
.snapshotChanges()
.subscribe((documents) => {
this.userDocuments = documents;
})
设置和重现步骤
我在 firebase 控制台的项目下创建了一个 firebase web 应用程序。在应用程序检查选项卡中,我将 recaptcha 中的网站密码粘贴到必填字段中,现在看起来像这样:
在我的app.module.ts
imports: [
..
AngularFireModule.initializeApp(environment.firebase),
// // AppCheckModule,
provideFirebaseApp(() => initializeApp(environment.firebase)),
environment.useEmulators
? [AppCheckModule]
: provideAppCheck(() => {
const provider = new ReCaptchaV3Provider(environment.recaptcha);
return initializeAppCheck(getApp(), {
provider,
isTokenAutoRefreshEnabled: true,
});
}),
],
在 enviroment.ts
中,我设置了来自 recaptcha 的密钥。此外,环境生产密钥设置为 true,因此 isDevMode()
returns false。有一个问题,否则 recaptcha 需要调试令牌。
示例数据和安全规则
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth.uid != null;
}
}
}
调试输出
ERROR FirebaseError: Missing or insufficient permissions.
有人可以给我建议如何继续吗?
直到几天前发布的 JS SDK 9.6 才添加了适用于 Firestore 的 AppCheck。它现在对我有用
看这里: https://firebase.google.com/support/release-notes/js