FireStore 에 집어넣는 데이터가 이상하다면?

첫번째, if 문을 사용하면 되는거 아니냐

그러나 if 문은, 그냥 유저들이 수정할 수 있기 때문임.

Firebase console에서

규칙 탭에 가면..

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match 경로 {
      조건
    }
  }
}

이런식으로

경로 : /product/문서id 원하는 document 경로

/product/{docid} 이렇게 해주면 product 안에 모든 문서

  • allow read : 어떤 사람이 읽을 수 있는지
  • allow create : 어떤 사람이 만들 수 있는지
  • update, delete 도 있음.

로그인 한 사람만 read 할 수 있게

 if request.auth

하면 요청한 사람의 로그인 정보를 출력해볼 수 있음.

if request.auth != null

이렇게 하면 로그인 된 사람만 read할 수 있게 됨.

내가 발행한 문서들만 수정할 수 있게 규칙 만들고 싶다면?

document안에 who라는 필드를 만들어서 실제 유저의 uid를 넣어주면.

규칙에 가서…

allow update  : if 지금 유저의 uid ==  게시물에 있던 uid;

이렇게 하면 수정할 수 있게 권한 부여하는 규칙이 된다.

allow update  : if request.auth.uid == resource.data.who;
  • request.auth 로 가면 로그인 된 사람의 정보
  • resource.data 안에는 게시물의 정보

Firebase 규칙 문법이 있음. 사이트 가서 원문 볼 수 있음.

allow create : if request.resource.data.name.match(정규식)
allow create : if int(request.resource.data.name) 

이런식으로 게시물 게시할 때의 규칙을 설정할 수 있다.

규칙을 잘 설정하고 싶으면 악성유저가 되어라.

  • 로그인 안하고 글 작성
  • 제목 안넣고 해본다든지.

match /{docid=**} 이렇게하면 모든 collection 모든 문서를 검출하는 코드가 됨.

** 라는 애가 recursive 뺑뺑이 돌면서 다 검색해준다는 뜻이라네..