4

私は、anglefire2とFirebaseの認証サービスを使って簡単なカスタム認証を使用しています。クッキーを使用してangularfire2でログインしたユーザを永続化する

import { Injectable } from '@angular/core'; 
import { AngularFire } from 'angularfire2'; 
import { Cookie } from 'ng2-cookies'; 

@Injectable() 
export class GlobalMenuService { 

    loggedIn: boolean = false; 

    constructor(private af: AngularFire) { } 

    login(email: string, password: string) { 
     this.af.auth.login({ 
      email: email, 
      password: password 
     }) 
      .then((success) => { 
       this.loggedIn = true; 
      }); 
    } 

    logout() { 
     this.af.auth.logout(); 
     this.loggedIn = false; 
    } 
} 

セッションを復元するためにクッキー(トークン、UID、メールか何か)にいくつかのデータを保存する方法、アプリのへのユーザ戻り、彼は記述せず、彼が再ログインすなわち、各時間があります信用証明書?

+1

Firebaseが自動的にセッションを処理します。 Firebase v3を使用している場合、トークンは期限切れで更新されません。 –

+1

こんにちは、それはそうではないようです。私は最新のリリース3.1.0を使用しています。ご覧のように、コンストラクタにAngularFireのインスタンスを注入しています。アプリケーションを起動するとaf.auth.getAuth()は常にnullです。 –

答えて

3

auth.subscribe()を使用してください。この関数は、認証ステートに変更があるたびに呼び出されます。

this.af.auth.subscribe(user => { 
    if (user) { 
    // User is signed in. 
    ... do other stuff 
    } else { 
    // No user is signed in. 
    ... do other stuff 
    } 
}); 

アプリを開いたときにすでにログインしている、またはあなたがsignInWithEmailAndPasswordを呼び出した場合、この関数は呼び出され、authがあなたログオンしたユーザーのデータが含まれています。

+0

AngularFireライブラリを使用するようにアプリケーションを設定しているので、firebaseへの直接参照はありません。私はそれを見つけることができないので、ライブラリが提案された方法をサポートしているか、それと全く同じものを持っているかどうかは、おそらく知っていますか? –

+0

あなたは正しいです、私はいくつかの情報([ここ])(https://github.com/angular/angularfire2/blob/master/docs/5-user-authentication.md)で私の答えを更新しましたこれはあなたの問題を解決しますか? ? :) –

+0

私は、認証の状態が永続していたと私は間違った方法を呼び出していたすべてを参照してください。私の問題を解決するのを助けてくれてありがとうが、これは私の最初の投稿だったので、いい/丁寧でありがとうと感謝しています。なぜなら「テキストは正しくフォーマットされていない」、 ))。 –

関連する問題