티스토리 뷰

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

응답 코드 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를 이용해야 한다. 이와 같은 규칙 설정은 매우 중요한 부분이므로, 개발 시 주의가 필요하다.
'기록' 카테고리의 다른 글
유저 이름 변경하기 (0) | 2024.08.25 |
---|---|
게시물 업데이트하기 (2) | 2024.08.25 |
ECMA 2022에서 눈여겨볼 것 (0) | 2024.05.12 |
ECMA 2021에서 눈여겨볼 것들 (0) | 2024.05.12 |
Object.values, Object.entries, Object.fromEntries, flat, allSettled (0) | 2024.05.12 |
- Total
- Today
- Yesterday
- 동적계획법
- Next.js
- async
- 비트마스킹
- 햄버거버튼
- CSS
- 카카오맵
- 다이나믹프로그래밍
- typescript
- 완전탐색
- 넥스트js
- 백준
- BFS
- aws
- 자바스크립트
- 순열
- 알고리즘
- 스택
- SQL
- 프로그래머스
- 구현
- C++
- themoviedb
- 리액트
- 브루트포스
- 타입스크립트
- 코드스테이츠
- Redux
- NextJS
- react
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |