2017-08-18 12 views
2

正しいログイン後にhome.htmlにリダイレクトするindex.htmlページがあります。私はログインとログアウトの部分を解決しました。私の問題は、私は、ログインせずにURLに直接home.htmlにアクセスすることができます。Firebaseは、ユーザーがログインしていない他のページへのアクセスを制限します。

ここに私のhome.htmlのいくつかのスニペットは、なるように、私は私のhome.htmlの始まりでこれを置く

<script> 
var config = { 
apiKey: "xxxxxx", 
authDomain: "firebaseapp.com", 
databaseURL: "firebaseio.com", 
}; 


firebase.initializeApp(config); 
const auth=firebase.auth(); 
const db=firebase.database(); 


var user = firebase.auth().currentUser; 
if (user) { 
//blank if correct login 
} else { 
window.location.href = 'firebaseapp.com/index.html'; 
} 
</script> 

ですページに直接アクセスすると、インデックスに戻ります。それはindex.htmlにリダイレクトしましたが、正しくログインしてもまだindex.htmlにリダイレクトされています

firebaseがあまりにも高速になり、currentUserの値を適切に初期化できないようです結果はnullです。 URLを使用して直接アクセスを制限する方法の提案は本当に役に立ちます。

ありがとうございます!

答えて

1

firebase.auth().currentUser;の代わりにfirebase.auth().onAuthStateChangedを試してみると、現在のユーザーを取得するのにおすすめの方法です。

ユーザーをcurrentUserにすると、表示されているのと同様の問題が発生することがあります。これはfirebaseの公式文書からのものです。

注:認証オブジェクトが初期化が完了していないため CurrentUserにもnullかもしれません。オブザーバーを使用してユーザーのサインイン状態を追跡する場合、このケースを処理する必要はありません。

はこのように現在のユーザーを取得してください:

firebase.auth().onAuthStateChanged(function(user) { 
    if (user) { 
    // User is signed in. 
    } else { 
    // No user is signed in. 
    } 
}); 
+0

ありがとう!それを解決した。それらを混乱させる括弧が原因です。そして、このonAuthStateChangedは正常に動作しました。私は次回より多くの文書を読むべきだと思う。 – Duckbenok

+0

これは問題ありません。このルールを覚えていれば、読んで、検索し、尋ねてください。ドキュメントを読んでから、Googleで検索して、最終的な解決策としてヘルプを求めてください。ドキュメントを読むことで、 –

関連する問題