簡體   English   中英

使用 onDisconnect() 拒絕 Firestore/Firebase 權限

[英]Firestore/Firebase permissions denied using onDisconnect()

在這個 Javascript 中,除了presenceRef.onDisconnect().set('no more');之外,一切正常。 語句,生成PERMISSION_DENIED: Permission denied in my console。

firebase.auth().onAuthStateChanged(function(user){
    if (user){
        uid=user.uid;

        db.collection('user').doc(uid).set({
            custnum: parseInt(custnum),
            email: email,
            password: password,
            screenname: screenname,
            admin: parseInt(admin),
            uid: uid
        })
        .then(function(){
            var docpath='/user/'+uid+'/email';

            var presenceRef=firebase.database().ref(docpath);

            presenceRef.onDisconnect().set('no more');
        })
        .catch(function(error){
            console.log('Error writing document: ' + error);
        });
    } else {
        db.collection('user').doc(uid).delete({
        })
        .then(function(){
            //success
        })
        .catch(function(error){
            console.log('Error writing document: ' + error);
        });

        uid='';
    }
});

當我連接到這個 URL 時,在“規則”選項卡中:

https://console.firebase.google.com/project/[項目名稱]/database/firestore/rules

...我已經全部打開了,如下:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
       allow read, write: if true;
    }
  }
}

我可以使用.set寫入數據庫。 為什么我不能使用onDisconnect()來設置不同的值? .db指的是firebase.firestore()連接。 Firebase 和 Firestore 之間發生了什么我不明白的事情嗎?

onDisconnect()是實時數據庫而非 Firestore 的方法,它允許您在客戶端與數據庫服務器斷開連接時寫入或清除數據。

因此,如果您打算 使用它,請將實時數據庫的規則更改為以下內容:

{
  "rules": {
    ".read": true,
    ".write": true
  }
}

僅在開發中使用這些規則。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM