Server/with Firebase

[Firestore] Cloud Firestore Rules - 인증에 따른 액세스 제어

Ardmos :) 2022. 1. 30. 20:45

 

위 규칙은 일반적인 인증 패턴으로 사용자가 자신의 데이터만 읽고 쓸 수 있도록 허용하는 방식입니다. 

 

   match /users/{userID} {
      allow read, update, delete: if request.auth != null && request.auth.uid == userID;
      allow create: if request.auth != null;
    }

 

이 부분이 중요한데

 

우선 첫 번째 줄의 {userID} 는 와일드카드로, /user/ 컬렉션 아래에 존재하는 다큐먼트들을 뜻합니다.

 

두 번째 줄의 allow는 if문의 조건이 만족될 경우 허용할 내용을 나타냅니다. 

두 번째 줄에서는 if문의 조건이 만족하는 사용자에게 /users/{userID}다큐먼트를 read, update, delete할 권한을 주고 있습니다.

두 번째 줄의 if문을 살펴보겠습니다.

클라이언트 앱에서 Firebase Authentication을 사용하는 경우 request.auth 변수에는 데이터를 요청하는 클라이언트의 인증 정보가 포함되어있습니다. 

따라서 request.auth가 null이 아니라면, 로그인에 성공한 사용자라는 뜻입니다.

request.auth.uid는 사용자 고유의 id값을 의미하는데, 이 값과 다큐먼트명을 비교함으로써( 미리 모든 다큐먼트의 이름을 해당 사용자의 uid로 정해뒀습니다. ) 사용자가 자신의 데이터만 읽고 쓸 수 있게끔 하고있습니다. 

 

마지막 세 번째 줄에서는 로그인한 유저라면 새로운 다큐먼트를 생성할 권한을 주는것을 허용하고 있습니다. 

 

 

 

참고.

 

 

 

 

728x90