2016-05-12 14 views
2

私は2つの小さなWebアプリケーションを持っています。Firebaseでログインした後、最初のものから2番目のものにリダイレクトしています。私の現在の問題は、認証データが保存されず、新しいページがロードされた後にnullが返されるということです。別のページにリダイレクトしたあとauthDataがnullになります

var ref = new Firebase("https://xxx.firebaseio.com"); 
var credentials = {}; 
credentials.email = email; 
credentials.password = password; 

ref.authWithPassword(credentials, function(error, authData) { 
    if (error) { 
     console.log("Login Failed!", error); 
     document.getElementById("login-status").innerHTML = error; 
    } else { 
    console.log("Authenticated successfully with payload:", authData); 
    console.log("AuthData expires: " + authData.expires); 
    window.location = "http://localhost:3000/"; 
    } 
}); 

だから、最初に私が正しく記録されますよとauthDataは、ログインの詳細を示しているが、新しいページにhttp://localhost:3000/authDataがnullです。

誰でもセッションを維持する方法を知っていますか?私はrememberオブジェクトで遊んだが、私の問題は解決しなかった。

答えて

2

Firebase認証では、セッションは自動的にブラウザのローカルストレージに保存されます。したがって、新しいページにアクセスすると、ユーザーはすでに認証されています。

しかし、あなたが)のユーザーを認証するケースのみを処理しているため、コードではこれを検出しません。

monitor the authentication stateです。そのドキュメントから:あなたは新しいページにこのスニペットを置く場合

// Register the callback to be fired every time auth state changes 
ref.onAuth(function(authData) { 
    if (authData) { 
    console.log("User " + authData.uid + " is logged in with " + authData.provider); 
    } else { 
    console.log("User is logged out"); 
    } 
}); 

は、それがすでにユーザが署名されていることを検出します

+0

を私はすでに新しいページにこのスニペットを使用したことだし、それを与えています。私はヌル値を返します。たぶん問題は、2つの異なるポート(3000と4000)を持つ2つの異なるWebサーバー上でページが実行されているためです。セッションを保存したり、ページの1つをリロードすると、セッションが保存されますが、別のセッション(localhost:3000からlocalhost:4000へ)に変更すると、セッションはnullになります。 – dabo

+0

ああ、セッションはブラウザのローカルストレージに保存されていると言っていたので、ドメインを変更するとセッションは失われます。私は1つのドメインに展開した後、両方のWebアプリケーションをホストできるので、問題を解決するはずです。助けてくれてありがとう! – dabo

関連する問題