首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FirebaseError:[代码=权限拒绝]:缺少权限或权限不足

FirebaseError:[代码=权限拒绝]:缺少权限或权限不足
EN

Stack Overflow用户
提问于 2019-06-08 23:04:28
回答 5查看 30.9K关注 0票数 14

我在服务中有一个简单的集合引用。

代码语言:javascript
复制
    firebase.auth().onAuthStateChanged(user => {
      if (user) {
          this.itineraryCollection = firebase
            .firestore()
            .collection(`itinerary/${user.uid}/itineraryList`);
        }
      });

我把这个服务叫做OnInit

代码语言:javascript
复制
  ngOnInit() {
    this.loggedInUser = firebase.auth().currentUser;
    this.dataSvc.getItineraries()
    .get()
    .then( itineraryListSnapshot => {
      this.itineraries = [];
      itineraryListSnapshot.forEach(snap => {
        this.itineraries.push({
          id: snap.id,
          activities: snap.data().activities,
          destination: snap.data().destination,
          startDate: snap.data().startDate,
          endDate: snap.data().endDate,
          tripDetails: snap.data().tripDetails,
          userId: snap.data().userId
        });
      });
    });

    // this.itineraries = this.dataSvc.getUserItinerary();
    console.log('logged in user add itin page', this.itineraries);
  }

但是,在页面初始化时,我一直收到以下错误:

代码语言:javascript
复制
vendor.js:49548 ERROR Error: Uncaught (in promise): FirebaseError: [code=permission-denied]: Missing or insufficient permissions.
FirebaseError: Missing or insufficient permissions.
    at new FirestoreError (vendor.js:76086)
    at JsonProtoSerializer.push../node_modules/@firebase/firestore/dist/index.cjs.js.JsonProtoSerializer.fromRpcStatus (vendor.js:81385)
    at JsonProtoSerializer.push../node_modules/@firebase/firestore/dist/index.cjs.js.JsonProtoSerializer.fromWatchChange (vendor.js:81882)
    at PersistentListenStream.push../node_modules/@firebase/firestore/dist/index.cjs.js.PersistentListenStream.onMessage (vendor.js:90087)
    at vendor.js:90016
    at vendor.js:90056
    at vendor.js:83144
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (polyfills.js:2749)
    at Object.onInvoke (vendor.js:51123)
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (polyfills.js:2748)
    at resolvePromise (polyfills.js:3189)
    at resolvePromise (polyfills.js:3146)
    at polyfills.js:3250
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (polyfills.js:2781)
    at Object.onInvokeTask (vendor.js:51114)
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (polyfills.js:2780)
    at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (polyfills.js:2553)
    at drainMicroTaskQueue (polyfills.js:2959)
    at push../node_modules/zone.js/dist/zone.js.ZoneTask.invokeTask (polyfills.js:2860)
    at ZoneTask.invoke (polyfills.js:2845)

我不确定在firebase中我的数据库规则应该是什么,但是我尝试了一些不同的规则:

代码语言:javascript
复制
      match /itinerary/{userId} {
            allow read; 
            allow write;
      }
      
            match /itinerary/{userId}/itineraryList {
            allow read; 
            allow write;
      }

任何帮助都将不胜感激。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-12-08 06:57:58

将其添加到数据库规则选项卡:

代码语言:javascript
复制
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write;
    }
  }
}
票数 22
EN

Stack Overflow用户

发布于 2019-06-09 01:39:40

尝试将规则更改为:

代码语言:javascript
复制
match /itinerary/{userId}/itineraryList/{doc} {
  allow read, write: if true;
}

请注意,如果条件'true‘只是为了测试,因为它允许每个人对该资源的权限。我建议这样做只是为了测试规则是否有效。

/{doc}添加到匹配-允许将规则应用于所保护的文档。

票数 7
EN

Stack Overflow用户

发布于 2021-05-09 01:48:24

我解决了这个问题,将数据库的规则更改为任何人都可以读取的规则,但只为连接的用户保留创建、更改、删除和更新的方法。注释部分用于后面的实现,您已经为每个登录用户定义了管理员规则,因此您可以传递到那里,只有管理员的用户才能更改。

代码语言:javascript
复制
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read: if true;
      allow create, update, delete, write: if request.auth != null;
      //allow create, update, delete, write: if request.auth != null && request.auth.uid == userIdAdmin;
    }
  }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56510745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档