nic*_*ook 7 authentication firebase firebase-authentication angularfire2 angular
我已经使用 firebase 为身份验证服务中的 angular 应用程序设置了身份验证,并且我正在尝试确保成功登录后会话状态的持久性。
我已经看到默认情况下 firebase 应该具有状态持久性,但是应用程序中的当前登录仅持续到页面刷新,之后再次需要登录,这似乎不正确。
我知道我必须使用 statePersistence 方法,如文档中所示,但这并没有说明如何在 angular 2+ 应用程序中实际实现登录/身份验证服务。
如何在以下身份验证服务中实现会话 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()
)
}
Run Code Online (Sandbox Code Playgroud)
您可能没有使用onAuthStateChanged侦听器来检测页面加载时的初始身份验证状态。
firebase.auth().onAuthStateChanged(user => {
if (user) {
// User signed in.
} else {
// User not signed in.
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3231 次 |
| 最近记录: |