2016-09-17 5 views
0

私は角度アプリを開発していて、Firebaseを使用してそれに登録とログ機能を実装しています。両方の機能がうまく機能しています。ユーザがログインしていなくても、ログインページのレンダリング値

私が抱えている問題は、onAuthStateChanged()関数です。私が欲しいのは、ユーザーがログインすると、ログインしているというメッセージを見ることができなければならないということです。私も "Hi {{currentUser.firstname}}"を見ることができます。ログインするとコードを作成しますが、ページを更新してもう一度ログインしようとすると、ログインボタンをクリックしなくても "{{currentUser.firstname}}"と表示されます。私のログインページが私はログインしていなくても$のrootScope.currentUser値をレンダリングする方法を私は知らない。私はそれ

JS

auth.onAuthStateChanged(function(user) { 
      if (user) { 
      // User is signed in. 
      var data = firebase.database().ref('users/' + user.uid); 
      data.on('value', function(snapshot) {  
      var userobj=snapshot.val(); 
      $rootScope.currentUser=userobj; 
     })} else { 
      // No user is signed in. 
      $rootScope.currentUser=' '; 
      } 
     }); 

HTML

<div class="userinfo" ng-show="currentUser"> 
    <span class="userinfo">Hi {{currentUser.firstname}}</span> 
    </div> 
ために、次のコードを書かれています

答えて

0

動作はデザインによって仕様されています。 docsから:(ブラウザで)ページを更新するか、アプリケーションを再起動すると、ユーザーの情報を失わないように

Firebase認証のインスタンスは、ユーザーの状態を持続します。

ユーザーの認証状態を保持しないようにするには、そのユーザーをサインアウトする必要があります。

+0

私はログアウト機能を実装しました。私はサインアウトのためにAuth参照を失うことができますが、ユーザーオブジェクトはまだ機能しています。ログアウトしてもログインページに「{{currentUser.firstname}}」と表示されています。私はこれについて正しいですか? @cartant –

+0

ログアウトした後、 'onAuthStateChanged'から渡された' user'は 'null'でなければなりません。最も可能性の高い説明は、Angularの変更検出が 'currentUser'への変更を見ていないことです。私はあなたが '$ apply'と呼ぶ必要があると思います - 何でも(それは私がAngular 1で開発してからしばらくありました)。 – cartant

関連する問題