【问题标题】:AngularFirestore Missing or Insufficient permission (Firebase custom token auth)AngularFirestore 权限缺失或不足(Firebase 自定义令牌身份验证)
【发布时间】:2021-08-11 20:52:24
【问题描述】:

我一直在尝试从 firestore 读取数据,但无法这样做...

async authUser() {
    let token = this._tokman.getUserToken();
    await this._afa.signInWithCustomToken(token);
  }

从服务器获取令牌并将其传递给 firebase 以验证用户身份。 然后调用firestore获取数据..

async data() {
    await this._afa.onAuthStateChanged(user => {
      if (user) {
        this._afs.collection('gps-data').doc(user.uid)
          .valueChanges()
          .subscribe(res => {
            console.log(res);
          }, err => {
            console.log(err);
          })
      }
    })
  }

但从 firestore 收到此错误。

FirebaseError: Missing or insufficient permissions.
at new e (http://localhost:4200/vendor.js:51950:23)
at http://localhost:4200/vendor.js:62177:28
at http://localhost:4200/vendor.js:62178:18
at e.onMessage (http://localhost:4200/vendor.js:62200:10)
at http://localhost:4200/vendor.js:62117:26
at http://localhost:4200/vendor.js:62148:37
at http://localhost:4200/vendor.js:66953:31
at ZoneDelegate.invoke (http://localhost:4200/polyfills.js:460:30)
at Zone.run (http://localhost:4200/polyfills.js:219:47)
at http://localhost:4200/polyfills.js:953:40

Firestore 安全规则是

 service cloud.firestore {
  match /databases/{database}/documents {
    match /gps-data/{userid} {
        allow read: if request.auth.token.sub == userid;
    }
   
  }
}

还将 jwt 令牌添加到 http 标头。 请指导我哪里做错了。

更新 解决方案:更改 firebase 版本 来自

"firebase": "^7.0 || ^8.0"

"firebase": "^8.0.2"

不改变安全规则

【问题讨论】:

    标签: javascript angular google-cloud-firestore firebase-security angularfire


    【解决方案1】:

    问题在于这一行中的token.sub

    request.auth.token.sub == userid;
    

    令牌的sub 是为其铸造该令牌的项目 ID。因此,您将项目 ID 与用户 ID 进行比较,两者永远不会相同。

    你想在这里比较两个用户ID,即:

    request.auth.uid == userid;
    

    我强烈建议您花一些时间阅读有关安全规则的文档,特别是 securing authenticationallowing only the content-owner access 中的部分。

    【讨论】:

    • 如果您使用自定义令牌,您可以从两个地方获取 uid,一个来自 auth,另一个来自 idToken。用户识别码:link。无论如何感谢您的帮助。
    猜你喜欢
    • 2021-08-24
    • 1970-01-01
    • 2023-03-12
    • 2017-12-15
    • 2017-12-19
    • 2019-10-24
    • 2020-10-14
    • 2016-11-06
    • 1970-01-01
    相关资源
    最近更新 更多