带有 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 通用应用程序提供服务

Angular 4 firebase 下拉选择标签选项

在 ngFor 中使用带有 angularfire2 的 firebase-src 指令失败

Angular 应用程序中的 Firebase UI Auth 小部件

如何在 NativeScript Angular 应用程序中初始化 Firebase 推送通知