4

Я использую простую пользовательскую аутентификацию с помощью angularfire2 и службу аутентификации Firebase.Persist вошел в систему с помощью angularfire2 с использованием файлов cookie

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

У меня нет прямой ссылки на firebase, так как у меня есть приложение, настроенное на использование библиотеки AngularFire. Возможно, вы знаете, поддерживает ли библиотека предложенный метод или что-то идентичное ему, поскольку я не могу найти его? –

+0

Вы правы, я обновил свой ответ с найденной информацией [здесь] (https://github.com/angular/angularfire2/blob/master/docs/5-user-authentication.md) Решает ли это вашу проблему ? :) –

+0

Я вижу, состояние аутентификации было постоянным, так как я просто вызывал неправильный метод. Спасибо, что помогли мне решить мою проблему, но также благодаря тому, что я был хорошим и вежливым, так как это был мой первый пост. Я думал, что меня поймают, потому что «текст не отформатирован правильно» или «информация недостаточно» или «Х»:)). –

 Смежные вопросы

  • Нет связанных вопросов^_^