fumitoshi
@fumitoshi (mu ja)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

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

1Answer

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

  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;
      }
    }
  }
0Like

Comments

  1. @fumitoshi

    Questioner

    @tukiyo3さん、いつも回答ありがとうございます!
    試してみます!

Your answer might help someone💌