ページを更新すると、クライアント Firebase は認証済みユーザーがいるとみなしているようですが、Firestore の Firebase ルールは、認証済みユーザーがいないことを暗示しています。
ユーザーが signInWithEmailAndPassword
経由でメールとパスワードを使用してサインインする Firebase アプリがあります。永続性を browserLocalPersistence
に設定します。通常、ユーザーがログインすると、認証されたユーザー オブジェクトを使用して onAuthStateChanged
メソッドが呼び出され、アプリケーションが正常に実行されます。ユーザーがページを更新すると、onAuthStateChanged
メソッドが null 以外のユーザーで再度起動されますが、セキュリティ ルールによりすべての Firebase クエリが失敗します。そこで私は何を間違っているのでしょうか。
これはreactjsアプリケーションです。あなたにインスピレーションを与える可能性のある他の回答を提供できる場合は、お知らせください。
私の Firebase ルール:
リーリー私のログインコード:
リーリー私の onAuthStateChanged コード
ああああ
のようになります。read
とwrite
の間のカンマを忘れているようです。allow read, write: if isAuthenticated();
結局、ユーザー情報を保持するために認証プロバイダーを実装する必要がありました。
新しいファイル AuthContext.tsx
新しいファイル AuthProvider.tsx
React を 'react' からインポートします。 ReactDOM を「react-dom/client」からインポートします。 「./App」からアプリをインポートします。 import { AuthProvider } から './provider/AuthProvider'; インポート "bootstrap/dist/css/bootstrap.min.css"; const root = ReactDOM.createRoot( document.getElementById('root') を HTMLElement として使用 ); root.render(
const ユーザー = useContext(AuthContext); useEffect(() => { if(ユーザー){ requestDocs(); } }、[ユーザー]);###更新後、ドキュメントを抽出するために必要な認証情報がすべて保持されているようです。