
Firestore Database에서는 정상적으로 데이터가 업로드가 되는데 Storage에는 업로드가 되지 않는 이슈 발생

위와 같이 catch(err)로 콘솔을 찍으면 err.message가 console에 찍혔다.
FirebaseError : Firebast Storage : USer does not haver permission to access
대충 번역하자면 스토리지에 대한 권한이 없어 거절된다는 뜻
검색&Chat GPT의 힘을 빌렸는데 처음에는 Firebase에 대한 이해가 낮아서 해결하는데 생각보다 시간이 걸렸다.
문제는 Firebase Storage의 인증 에러 였다.

스토리지에 들어가면 상단에 규칙 을 클릭해서 들어가면 Firebase Storage 인증에 대한 규칙이 명시되어 있다.
rules_version = '2';
// Craft rules based on data in your Firestore database
// allow write: if firestore.get(
// /databases/(default)/documents/users/$(request.auth.uid)).data.isAdmin;
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if false;
}
}
}
나의 최초값은 allow read, write: if false;
모든 읽기 쓰기의 값을 거절한다는 뜻이었다.
간단하게 false를 true로만 수정해도 읽기쓰기는 가능해진다.
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if true;
}
}
하지만 해당구문은 파이어베이스의 모든 접근을 허용한다는 뜻이라 로그인을 하지않아도, 누구나 접근가능하다는 뜻이 된다. 물론 로그인을 하지 않을 시 Storage에 업로드 할 수 있는 페이지 라우팅을 막기는 했지만 확실한 권한 제어가 필요했다.
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if request.auth != null;
}
}
해당 구문으로 수정하면 로그인을 한 인증된 사용자에게만 접근을 허락할 수 있다.
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if request.auth != null && request.auth.uid == userId
}
}
이렇게 구문을 작성하면 로그인을 한 사용자만 접근 && 해당 유저아이디를 가진 사람만이 다시 Storage에 접근할 수 있도록 접근을 제한할 수 있다.