2017-02-18 8 views
0

Firebaseで認証されたユーザのみを許可するようにページを設定する方法を知りたいと思います。私は自分のサイトを設定するのが難しいです、私はユーザーがログインとパスワードを入力することを期待し、認証後、彼のプロフィールに指示されるでしょう。ユーザーが向けられたのページ上で認証されたユーザのみを許可する

プロファイル(ウェブページ)、URL

www.example.com/"user.uid"/index.html

が、これを持っています誰かが

012 www.example.com/"user.uid"/index.html URL

にアクセスするので、もしページは、認証されたユーザのためにアクセスすることができます

ユーザーがログインページ上のコードのメインページに

http://www.example.com

を監督する必要があります。

btnLogin.addEventListener('click', e =>{ 
     const email = txtEmail.value; 
     const pass = txtPassword.value; 
     const auth = firebase.auth(); 
     const promise = auth.signInWithEmailAndPassword(email,pass); 
     promise 
     .then(user => window.location.href="http://www.example.com/" + user.uid + "/index.html") 
     .catch(e => console.log(e.message)); 
    }) 

クライアントページ上のコード:

firebase.auth().onAuthStateChanged(firebaseUser => { 
     if(firebaseUser){ 
      console.log(firebaseUser); 
     }else{ 
      window.location.href = "http://www.example.com"; 
      console.log("offline"); 
        } 
}); 

私が遭遇した問題は、クライアントのページにリダイレクトすると、ユーザのステータスがオフラインになることです。

答えて

0

Firebaseは、クライアント側、特にシングルページアプリケーションを動作させるように最適化されています。

  1. ハンドル認証チェッククライアント側:あなたは、次のいずれかを実行することができ、そのページのwww.example.com/"user.uid"/index.htmlにonAuthStateChangedリスナーを追加します。ユーザーがログインしていない場合ログインしてそのページのuidと一致しない場合は、ログインページにリダイレクトします。

  2. クッキーを使用します。ログイン後、Firebase IDトークンをバックエンドに送信し、セッションクッキーを作成するか、セッションクッキーとしてIDトークンを使用することができます。その前にそのIDトークンを検証することを確認してください。 Firebaseには、そのためのnode.jsとjavaライブラリがあります。また、Firebase IDトークンが1時間ごとに期限切れになるので、クライアント側の変更を常に聴取する必要があります。とにかく、クッキーを使用して、次回ユーザーが制限付きリソースを要求したときに、クッキーが有効であることをチェックし、そのリソースを提供する前に予想されるユーザーと一致するかどうかを確認します。

関連する問題