, 나는 단지 (사용자 정의 할당) 관리자가 자원을// 업데이트 쓰기 삭제할 수 있도록하기 위해 노력하고있어, 그리고 그것을 위해 나는이 보안 규칙이있어 :중포 기지 경우 FireStore : 중포 기지 경우 FireStore에서 사용자 정의 관리자 권한
service cloud.firestore {
match /databases/{database}/documents {
match /resources {
allow read;
allow write, update, delete: if get(/users/$(request.auth.uid).isAdmin);
}
match /resources/{resource} {
allow read;
allow write, update, delete: if get(/users/$(request.auth.uid).isAdmin);
}
}
}
을
내가 사용자의 관리자로 표시되어 사용자로 로그인하고있어 모음 :
NfwIQAjfNdS85yDvd5yPVDyMTUj2는 UI이다 D는 인증 창에서받은 : 어떤 이유로 (들어,
그러나 UPDATE : 이유를 식별; 답변을 참조하십시오.) PERMISSION_DENIED 자원에 콜렉션에 글을 쓸 때 실수로 관리자 권한으로 로그인 한 후 오류가 발생합니다.
아마도 Firestore에서 요청 로그를 볼 수 있습니까? 그런 다음 request.auth.uid
이 내 컬렉션 및 규칙과 일치 하는지를 살펴볼 수 있습니다.
오 시도, 좋은! 나는 수집 수준에 관한 규칙에 관한 부분을 주목하지 못했다. 감사! 또한 이전에 실제로'create, update, delete '를 했었고, 이제는 다른 것들을 실험하기 위해 실험 해 보았습니다.하지만 당신이 맞습니다. 그것은'write' 일뿐입니다. matchers 내부에 함수를 넣으려고 시도하지만, 내 생각에 그 종류의 목적을 무력화. :-) – sindrenm
예 [여기] (https://firebase.google.com/docs/firestore/security/secure-data#writing_custom_functions)와 같은 여러 유효성 검사를 위해서만 함수를 사용합니다. – Hareesh
그래서 최상위 레벨 정규 표현식에 함수를 넣습니다. (/ 데이터베이스/{데이터베이스}/문서) 잘 작동합니다! 그렇다면 문제는 없습니다. 고마워, @Hareesh, 내 대답을 업데이 트하겠습니다. :-) – sindrenm