티스토리 뷰

로컬에서 이미지와 같이 게시물을 작성한 결과

 

 위 이미지처럼 이미지를 첨부한 후, 게시물을 작성하였는데 이미지가 제대로 보이지 않았다. 배포된 곳에서도 이미지가 제대로 보이지 않았다. 그래서 우선 네트워크 탭을 확인해보았다.

 

 

응답 코드 403과 함께, 거절되었다는 메세지가 보인다. 하지만 지금까지 잘 되던게 갑자기 안된다는게 이해가 가지 않았다. 그래서 강의 마지막 내용부터 거꾸로 천천히 했던 것을 살펴보았고, 문제점을 발견했다.

 

bananarules_version = '2';
service firebase.storage {
  match /b/{bucket}/o { 
    match /{allPaths=**} {
      allow read: if request.auth != null;
      allow write: if request.auth != null && resource.size < 2 * 1024 * 1024;
    }
  }
}

 

이 코드는 firebase의 storage 규칙으로 작성한 코드이다. 여기서 resource.size는 새로 업로드되는 파일의 크기를 나타내기 위해 작성하였는데, 이는 새로 업로드되는 파일의 크기가 아닌, 기존에 존재하는 파일의 크기를 의미한다. 하지만 새로 업로드되는 파일의 크기를 검증하려면 request.resource.size를 이용해야 한다. 그래서 위 규칙 코드를 아래처럼 수정하였다.

 

bananarules_version = '2';
service firebase.storage {
  match /b/{bucket}/o { 
    match /{allPaths=**} {
      allow read: if request.auth != null;
      allow write: if request.auth != null && request.resource.size < 2 * 1024 * 1024;
    }
  }
}

 

resource.size request.resource.size로 변경하였다. 이렇게 수정하니 이미지 업로드가 제대로 되는 것을 확인할 수 있었다.

 

로컬에서 이미지 업로드

 

배포 버전에서 이미지 업로드

 

 


결론

 

Firebase Storage 규칙에서 그냥 resource와 request.resource의 차이점을 이해할 수 있었다. 기존 파일의 속성을 확인할 때는 resource를, 새로 업로드되는 파일의 속성을 확인할 때는 request.resource를 이용해야 한다. 이와 같은 규칙 설정은 매우 중요한 부분이므로, 개발 시 주의가 필요하다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함