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 뺑뺑이 돌면서 다 검색해준다는 뜻이라네..