Để nhanh chóng kiểm thử Firebase Security Rules đã cập nhật trong bảng điều khiển Firebase, hãy sử dụng Rule Playground.
Rules Playground là một công cụ tiện lợi để sử dụng khi bạn khám phá các hành vi mới hoặc nhanh chóng xác thực các quy tắc khi bạn viết các quy tắc đó. Ứng dụng này sẽ hiển thị thông báo xác nhận rằng quyền truy cập đã được cho phép hoặc bị từ chối theo các thông số mà bạn đặt cho quá trình mô phỏng.
Sử dụng Rules Playground
- Mở bảng điều khiển Firebase rồi chọn dự án của bạn.
- Sau đó, trong bảng điều hướng sản phẩm, hãy làm theo một trong những cách sau:
- Chọn Realtime Database, Cloud Firestore hoặc Bộ nhớ, tuỳ thích, sau đó nhấp vào Quy tắc để chuyển đến trình chỉnh sửa Rules.
- Sau khi chỉnh sửa, hãy nhấp vào Rules Playground (Khu vui chơi quy tắc) trong trình chỉnh sửa.
- Trong phần cài đặt Rules Playground (Sân chơi quy tắc), hãy chọn các tuỳ chọn cho kiểm thử, bao gồm:
- Kiểm thử hoạt động đọc hoặc ghi.
- Một Vị trí cụ thể trong cơ sở dữ liệu hoặc bộ nhớ của bạn, dưới dạng một đường dẫn.
- Loại xác thực – người dùng chưa xác thực, người dùng ẩn danh đã xác thực hoặc một mã nhận dạng người dùng cụ thể.
- Dữ liệu dành riêng cho tài liệu mà quy tắc của bạn tham chiếu cụ thể (ví dụ: nếu quy tắc của bạn yêu cầu có một trường cụ thể trước khi cho phép ghi).
- Nhấp vào Run (Chạy) rồi tìm kết quả trong biểu ngữ phía trên trình chỉnh sửa.
Tình huống mẫu trong Rules Playground
Kiểm thử hành vi của Rules Playground bằng tình huống mẫu và các quy tắc cơ bản sau.
Cloud Firestore
service cloud.firestore {
match /databases/{database}/documents {
// Allow only authenticated content owners access
match /some_collection/{document} {
allow read, write: if request.auth != null && request.auth.uid == request.resource.data.author_uid
}
}
}
Realtime Database
// These rules grant access to a node matching the authenticated // user's ID from the Firebase auth token { "rules": { "users": { "$uid": { ".read": "$uid === auth.uid", ".write": "$uid === auth.uid" } } } }
Cloud Storage
// Grants a user access to a node matching their user ID
service firebase.storage {
match /b/{bucket}/o {
// Files look like: "user/<UID>/path/to/file.txt"
match /user/{userId}/{allPaths=**} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
}
}
Trong trình chỉnh sửa Rules, hãy thêm quy tắc ở trên.
Chọn get (lấy) trong trình đơn thả xuống Simulation type (Loại mô phỏng) rồi nhập một đường dẫn hợp lệ vào trường Location (Vị trí).
Bật Xác thực rồi chọn một loại xác thực trong trình đơn thả xuống Nhà cung cấp.
Nhập thông tin chi tiết về mã nhận dạng người dùng rồi nhấp vào Chạy.
Kết quả của quá trình mô phỏng sẽ xuất hiện ở đầu trình chỉnh sửa. Tuỳ thuộc vào thông tin chi tiết về mã nhận dạng người dùng mà bạn đã nhập, bạn sẽ thấy một biểu ngữ xác nhận rằng quyền đọc đã được cho phép hoặc từ chối thành công.