带有 Firebase 的 Angular - 应用检查后权限缺失或不足
Posted
技术标签:
【中文标题】带有 Firebase 的 Angular - 应用检查后权限缺失或不足【英文标题】:Angular with Firebase - missing or insufficient permissions after app check 【发布时间】:2022-01-06 11:57:39 【问题描述】:我使用 angularfire 在我的 Angular 应用程序中与 Firestore 进行交互。不幸的是,之后
我在 firebase 控制台中设置了应用程序检查,在第一次与 firestore 交互后,我在 webbrowser 的控制台中收到了ERROR FirebaseError: Missing or insufficient permissions.
(请参阅下面的组件),这里有一些对您有用的信息,我从我的票证中复制了这些信息angularfire 仓库。
版本信息
角度:
@angular-devkit/architect 0.1200.5 @angular-devkit/build-angular 12.2.13 @angular-devkit/核心 12.2.13 @angular-devkit/原理图 12.2.13 @原理图/角度 12.2.13 rxjs 6.6.7 打字稿 4.3.5
Firebase:
9.19.0
AngularFire:
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()
返回 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.
谁能给我一个建议如何在这里进行?
【问题讨论】:
【参考方案1】:直到几天前发布的 JS SDK 9.6 才添加 AppCheck for Firestore。它现在为我工作
请看这里: https://firebase.google.com/support/release-notes/js
【讨论】:
以上是关于带有 Firebase 的 Angular - 应用检查后权限缺失或不足的主要内容,如果未能解决你的问题,请参考以下文章
重新路由到带有/用户数据 Angular 2 和 Firebase 的个人资料页面
使用 Firebase 云功能为带有 i18n 的 Angular 10 s-s-r 通用应用程序提供服务
在 ngFor 中使用带有 angularfire2 的 firebase-src 指令失败