cuốn sách gpt4 ai đã làm

Firebase .validate không hoạt động với $location như mong đợi

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 08:56:23 25 4
mua khóa gpt4 Nike

Tôi có quy tắc Firebase sau nhưng tôi không thể xác thực như mong đợi:

{
"quy tắc": {
".read": đúng,
".write": đúng,

"Các mặt hàng đặc biệt": {
"$itemid": {
".validate": "root.child('items/' + $itemid).exists()"
}
}
}
}

Mục đích của quy tắc .validate của tôi là các mục trong danh sách "specialItems" sẽ chỉ được chấp nhận nếu chúng đã tồn tại trong danh sách "mục". Thật không may, dù sao thì Firebase cũng không cho phép tôi thêm vào các mục đặc biệt - không còn nghi ngờ gì nữa vì tôi đã hiểu nhầm cách hoạt động của quá trình xác thực.

Tôi đang sử dụng API urlfetch python của công cụ ứng dụng để giao tiếp với firebase thông qua REST và sử dụng phương thức PATCH.

auth_payload = {"uid": "custom:1", "auth_data": "foo"}
mã thông báo = create_token(FIREBASE_SECRET, auth_payload, {"admin": True})

url = "https://.firebaseio.com/specialItems.json?auth=" + mã thông báo
tải trọng = json.dumps({"myItem": "ok"})

kết quả = urlfetch.fetch(url=url, payload=payload, Method=urlfetch.PATCH)

Khi bắt đầu với một cơ sở dữ liệu trống, điều này để lại cho tôi một cây dữ liệu hoàn chỉnh trông như thế này:

mặt hàng đặc biệt
-- myItem: "được"

Ban đầu tôi nghĩ cây này sẽ không đạt được các quy tắc xác thực. Tôi cũng đã thử sử dụng PUT và nó cũng có tác dụng tương tự:

url = "https://.firebaseio.com/specialItems/myItem.json?auth=" + mã thông báo
kết quả = urlfetch.fetch(url=url, payload='"ok"', Method=urlfetch.PUT)

Một điều khác cần lưu ý là hiện tại tôi cần xác thực bằng "admin: True" để viết bất cứ điều gì, mặc dù các quy tắc của tôi dường như chỉ ra rằng bất kỳ ai cũng phải có quyền truy cập đọc/ghi. Làm tôi băn khoăn liệu các quy tắc của tôi có được áp dụng đầy đủ hay không - nếu vậy thì tôi không chắc chắn cách bật các quy tắc của mình - chúng nằm trong Ngăn Quy tắc & Bảo mật. Tôi cũng cho rằng quản trị viên không được phép vi phạm các quy tắc xác thực lược đồ.

câu trả lời hay nhất

Giả định của bạn là không chính xác. sử dụng quản trị viên: đúng Việc xác thực sẽ bỏ qua các quy tắc bảo mật. Do đó, quy tắc .validate của bạn sẽ không được áp dụng trong trường hợp này. .xác nhận Bản thân các quy tắc không có gì sai về mặt vật lý.

Ngoài ra, giả sử câu hỏi của bạn phản ánh chính xác những gì đang thực sự xảy ra thì không cần phải xác thực ở đây. trên đường dẫn gốc .viết/.đọc true sẽ cho phép truy cập vào bất kỳ dữ liệu nào trong Firebase. Có thể quy tắc của bạn đang hoạt động tốt và chặn việc ghi, đó là lý do tại sao bạn nhầm tưởng rằng bạn cần quản trị viên: đúng để ghi dữ liệu.

Vui lòng kiểm tra trình giả lập như Saeed đã đề xuất trong câu trả lời của anh ấy.

Về python - Firebase .validate không hoạt động với $location như mong đợi, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/29838170/

25 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress