Firestore 보안 규칙을 디버깅하는 유용한 커스텀 함수

2534 단어 firestorefirebase
Firestore 보안 규칙은 주어진 값을 debug에 기록하는 함수 firestore-debug.log 를 제공합니다(Firestore Emulator를 사용하는 경우에만, 프로덕션에서는 작동하지 않음). 그러나 컨텍스트에 대한 정보 없이 값만 인쇄합니다. 보안 규칙이 예상대로 작동하지 않는 경우 모든 의심스러운 표현을 debug로 래핑한 다음 각 로그 전체와 debug에 대한 충분 호출 사이의 대응 관계를 파악하는 데 어려움을 겪을 수 있습니다.

요청이 거부된 이유를 설명하는 사용자 정의 메시지를 기록하는 기능이 있다면 어떨까요? 처럼:


allow get: if
  // logs "not admin" if the user's role is not admin
  assert(request.auth.role == "admin", "not admin") &&
  // logs "email is not verified" if email_verified is false
  assert(request.auth.email_verified, "email is not verified");


실제로 이assert 기능을 구현할 수 있습니다! 정의는 다음과 같습니다.

function assert(condition, message) {
  return condition || debug(message) && false;
}

condition가 참이면 condition만 반환합니다. 그렇지 않으면 messagefirestore-debug.log에 기록하고 false를 반환합니다.

이 기능이 보안 규칙을 디버깅하는 데 도움이 되기를 바랍니다.

좋은 웹페이지 즐겨찾기