2017-10-08 17 views
6

Tôi gặp lỗi khi cố viết thư cho Firestore.Thiếu hoặc không đủ quyền khi viết vào trường sử dụng Firestore trong các quy tắc truy cập

Tôi đang cố gắng sử dụng trường chứa người dùng uid cho quy tắc bảo mật của tôi.

service cloud.firestore { 
    match /databases/{database}/documents { 

    match /messages/{document=**} { 
     allow read: if resource.data.user_uid == request.auth.uid; 
     allow write: if resource.data.user_uid == request.auth.uid; 
    } 
    } 
} 

Nếu tôi có dữ liệu trong cơ sở dữ liệu FireStore của tôi, các quy tắc đọc hoạt động tốt - nhưng khi tôi cố gắng để viết tôi nhận được: Error: Missing or insufficient permissions. Có điều gì tôi đang làm sai với quy tắc viết này?

P.S. Nếu tôi thay đổi quy tắc của tôi vào đó, tôi có thể viết thư cho cơ sở dữ liệu của tôi - nhưng điều này không đủ an toàn cho các mục đích của tôi:

match /messages/{document=**} { 
     allow read: if resource.data.user_uid == request.auth.uid; 
     allow write: if request.auth != null; 
    } 

Trả lời

7

resource.data đề cập đến các dữ liệu đã được lưu trữ, người dùng nên quy tắc của bạn được phép chỉ cập nhật dữ liệu đã bao gồm ID người dùng của họ.

Những gì bạn có thể muốn kiểm tra là request.resource.data đó là dữ liệu mới đến

Có một tài liệu khá sâu rộng về các lĩnh vực này và các quy tắc bảo mật khác ở đây:. https://firebase.google.com/docs/firestore/security/secure-data

+0

Cảm ơn mà làm việc. Tài liệu Firebase cần cập nhật, họ chỉ cung cấp ví dụ để đọc, họ nên cung cấp ví dụ để viết quá .... –

+0

@LeoFarmer có tài liệu khá rộng về các quy tắc bảo mật khác nhau tại đây: https://firebase.google.com/ docs/firestore/security/secure-data – Scarygami

Các vấn đề liên quan