วิธีใช้ Firebase Auth กับ Firestore ใน Flutter

Sep 06 2020

ฉันมีโปรแกรมกระพือขึ้นอยู่กับcloud_firestoreและfirebase_authผมเพิ่มผู้ใช้ (ปุ่มสีฟ้า) โดยการตรวจสอบสิทธิ์ Firebase และเก็บรหัสในรหัสเพื่อให้ผู้ใช้นี้เป็นผู้ดูแลระบบ , ผู้ใช้ปกติสามารถสร้างบัญชีโดยการประยุกต์ใช้ (อีเมลและรหัสผ่าน) ความ สิ่งที่ฉันต้องการคือให้แน่ใจว่าผู้ดูแลระบบเป็นคนเดียวที่สามารถลบข้อมูลออกจากฐานข้อมูลได้ในขณะที่ผู้ใช้ที่เหลือได้รับอนุญาตให้อ่านและเขียนเท่านั้นฉันจึงทำสิ่งนี้:

ฉันเปลี่ยนบทบาทในโครงการ Cloud Firestore เป็นสิ่งนี้:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth != null;
      allow delete : if request.auth.uid == 'psqxVzX6BvYCuWbajhcEK1QGZOo1';
    }
  }
}

นี่เป็นเรื่องจริงหรือไม่และ Firebase จะไวต่อuid ได้อย่างไร

บางทีคำถามของฉันคือวิธีส่งuidพร้อมfirestoreคำขอ

ขอบคุณล่วงหน้า

คำตอบ

1 FrankvanPuffelen Sep 06 2020 at 21:21
  1. หากคุณมีwriteกฎกฎนั้นจะอนุญาตให้สร้างอัปเดตและลบการดำเนินการ
  2. หากคุณมีกฎหลายข้อสำหรับการดำเนินการเดียวกันกฎเหล่านั้นจะรวมเข้าด้วยกัน

ซึ่งหมายความว่าคุณallow read, write: if request.auth != nullอนุญาตให้ผู้ใช้ที่พิสูจน์ตัวตนสร้างอัปเดตและลบเอกสารใด ๆ ในฐานข้อมูล

หากคุณต้องการอนุญาตให้ผู้ใช้ที่ได้รับการพิสูจน์ตัวตนสร้างหรืออัปเดตเอกสาร แต่ต้องการให้ผู้ใช้ที่มี UID เฉพาะดังกล่าวลบเอกสารเท่านั้นคุณต้องตั้งชื่อการดำเนินการเหล่านั้นอย่างชัดเจน:

allow read, create, update: if request.auth != null;
allow delete: if request.auth.uid == 'psqxVzX6BvYCuWbajhcEK1QGZOo1';

สำหรับข้อมูลเต็มรูปแบบให้ดูที่เอกสารในการดำเนินงานที่ละเอียด