Cloud Firestore 보안 규칙에서 자주 쓰는 방법
인증 시스템
인증하는 사용자만 읽을 수 있습니다.
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read: if request.auth != null;
}
}
}
액세스하는 문서 ID가 요청의
uid
와 일치하면 읽을 수 있습니다. 즉 자신의 데이터였을 경우에 읽기가 가능하게 됩니다.service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read: if request.auth.uid == userId;
}
}
}
Cloud Firestore는 문서 데이터를 기반으로 규칙을 동적으로 만들 수 있으므로 다음과 같은 작업을 수행할 수 있습니다. 유용합니다 😄
덧붙여서, 코멘트 아웃 하고 있는 부분과 같이 절대 패스를 지정해,
get
함수로 문서를 취득하는 것도 가능합니다.service cloud.firestore {
match /databases/{database}/documents {
match /posts/{postId} {
allow update: if resource.data.teacherId == request.auth.uid;
// allow update: if get(/databases/$(database)/documents/posts/$(postId)).data.teacherId == request.auth.uid;
}
}
}
밸리데이션계
요청 데이터에
email
가 있으면 문서를 만들 수 있습니다.service cloud.firestore {
match /databases/{database}/documents {
match /posts/{postId} {
allow create: if ('email' in request.resource.data);
}
}
}
요청 데이터의
email
가 String이면 문서를 만들 수 있습니다. 또한 is
를 사용하여 확인할 수 있는 데이터 형식은 다음과 같습니다. 자세한 내용은 여기을 참조하십시오.service cloud.firestore {
match /databases/{database}/documents {
match /posts/{postId} {
allow create: if (request.resource.data.email is string);
}
}
}
요청 데이터의
email
크기가 3자 이상 254자 이하인 경우 문서를 만들 수 있습니다.service cloud.firestore {
match /databases/{database}/documents {
match /posts/{postId} {
allow create: if (request.resource.data.email.size() >= 3) && (request.resource.data.email.size() <= 254);
}
}
기타
사용자 테이블에 자신의
uid
와 일치하는 테이블이 있는 사용자만 읽을 수 있습니다.service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read: if exists(/databases/$(database)/documents/users/$(request.auth.uid));
}
}
}
아래는 사용 빈도가 높기 때문에 커스텀 함수로서 잘라 두면 편리합니다.
function isAuthenticated() {
return request.auth != null;
}
function isUserAuthenticated(userId) {
return request.auth != null && userId == request.auth.uid;
}
function requestData() {
return request.resource.data;
}
참고
Reference
이 문제에 관하여(Cloud Firestore 보안 규칙에서 자주 쓰는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yum_fishing/items/63fa9b5d20b34952233c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)