@fumitoshi
Revisions
Report this question
Subscribe question
Help us understand the problem. What is going on with this question?
Q&A

firebaseのセキュリティルールが本当に謎です

概要

firebaseのcloud firestoreのセキュリティルールでつまずいています。

やりたいこと

ユーザー認証ができている人だけ、データを見れるようにしたいです。

試したこと

パターン①
うまく表示されました

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}

パターン②
エラーがでてうまく表示されませんでした。

エラー内容
Failed to load resource: the server responded with a status of 403 ()

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth.uid != null;
    }
  }
}

聞きたいこと

udemyで勉強しました。
そのときはパターン②を書くことで認証ユーザーのみがデータを見れると言っていましたが、僕の場合うまくできませんでした。
懸念点としては、テストモードかロックモードにしたか忘れてしまいました。
ドキュメントも読みましたがパターン②で書くような感じだったのでますますわからなくなりました。

パターン①でもセキュリティは大丈夫なのでしょうか?
パターン①の場合そういう挙動を行っているのか教えて欲しいです。
それと、パターン2でうまくいかない原因もわかれば教えていただきたいです。

0
1
Answer

まずは以下を試してみてはいかがでしょうか。

  rules_version = '2';
  service cloud.firestore {
    match /databases/{database}/documents {
      match /{document=**} {
-       allow read, write: if request.auth.uid != null;
+       allow read, write: if request.auth != null;
      }
    }
  }
以下は作りに合わせて修正が必要かも?
  rules_version = '2';
  service cloud.firestore {
    match /databases/{database}/documents {
      match /{document=**} {
-       allow read, write: if request.auth.uid != null;
+       allow read, write: if request.auth != null && request.resource.data.userID == request.auth.uid;
      }
    }
  }
0
@tukiyo3さん、いつも回答ありがとうございます!
試してみます!

Help us understand the problem. What is going on with this answer?
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした