我已经在一个 Angular 应用的认证服务中使用 Firebase 设置了身份验证,并且我正在尝试确保成功登录后会话状态持久化。
我看到 Firebase 默认应该具有状态持久性,但是当前应用程序中的登录仅持续到页面刷新之前,之后又需要重新登录,这似乎不对。
我知道我必须使用 statePersistence 方法,如文档所示,但是这并没有清楚地说明如何将其实现到 Angular 2+ 应用的登录/认证服务中。
我该如何将 session statePersistence 实现到以下认证服务中?
auth.service.ts
我看到 Firebase 默认应该具有状态持久性,但是当前应用程序中的登录仅持续到页面刷新之前,之后又需要重新登录,这似乎不对。
我知道我必须使用 statePersistence 方法,如文档所示,但是这并没有清楚地说明如何将其实现到 Angular 2+ 应用的登录/认证服务中。
我该如何将 session statePersistence 实现到以下认证服务中?
auth.service.ts
import { Injectable } from '@angular/core';
import { Router } from '@angular/router';
import { Observable } from 'rxjs/Observable';
import * as firebase from 'firebase/app';
import { AngularFireAuth } from 'angularfire2/auth';
@Injectable()
export class AuthService {
private user: Observable<firebase.User>;
isAuthenticated: boolean = false;
constructor(private firebaseAuth: AngularFireAuth, private router: Router) {
this.user = firebaseAuth.authState;
}
signIn(email: string, password: string) {
this.firebaseAuth
.auth
.signInWithEmailAndPassword(email, password)
.then(value => {
console.log('Signed In');
this.isAuthenticated = true;
this.router.navigateByUrl('/dashboard');
})
.catch(err => {
console.log('Sign-In Error: ', err.message);
});
}
signInGoogle() {
return this.firebaseAuth.auth.signInWithPopup(
new firebase.auth.GoogleAuthProvider()
)
}