데이터베이스(DB)/Firebase

파이어베이스 Firebase 데이터베이스 규칙, firestore database rules

마달랭 2024. 8. 29. 11:33

데이터베이스 규칙

게시판 구현을 예로 들어 로그인한 유저만 조회, 생성 가능 로그인한 유저가 작성한 글만 수정, 삭제 가능 등에 대한 기능을 구현하기 위해 데이터 베이스 규칙을 추가할 수 있다.

 

Firebase Database - 규칙 탭 클릭

 

기본으로 등록된 규칙으로는 특정 날짜 이전까지 모든 문서에 대해 (document=**) 읽고(read) 쓰기(write) 허용(allow) 상태인 점을 확인할 수 있다.

 

 

데이터베이스 규칙 변경

articles 컬렉션의 모든 문서에 한해 로그인한 유저만 조회, 생성 가능하도록 하고

로그인한 유저가 작성한 글만 수정, 삭제 가능하도록 규칙을 변경한다.

 

기능 테스트

로그인 하지 않은 Case

로그인을 하지 않으니 게시글 목록을 불러올 수 없다.

 

로그인 하지 않은 상태로 게시글 생성 Case

글 생성 성공 alett이 노출되지만, 실제로 firestore database에는 추가되지 않은 점을 볼 수 있다.

글 생성 성공이 노출되는 부분은 별도의 예외 처리를 통해 구현해 주면 된다.

 

로그인 상태에서 게시글 확인 Case

로그인을 한 상태에서 게시글 목록을 확인할 경우 firestore database에 저장된 게시글들이 노출된다.

 

자신이 작성하지 않은 게시글 삭제 Case

현재 로그인한 UID : VpkuDk4iEXXYnVDt1YdN0Vbgmla2

글을 작성한 UID : NvkIdKYfymMcEb8MHHv3vYvij2v2

두 UID가 상이한 경우 자신이 작성한 글이 아니므로 삭제 요청 시 에러가 노출된다.

 

자신이 작성하지 않은 게시글 수정 Case

상동의 케이스지만, 수정의 경우 수정에 성공했다고 노출이 된다.

하지만 이는 javascript 상에서의 로직일뿐 실제 db에는 반영되지 않았으며, 이 또한 예외처리를 통해 로직을 변경해 주면 된다.

실제로는 내용이 변경되지 않았다.

728x90