我希望经过身份验证的设置isAuthenticated:成功联合Google登录后boolean为True,或者用户已登录状态 .
import {Injectable} from '@angular/core';
import {AngularFire} from 'angularfire2';
import {Observable} from 'rxjs/Observable';
//this current code is not making sense. Any suggestion
//to make it an Observable for Signin and Logout?
@Injectable()
export class AuthService {
isAuthenticated:boolean = false;
authObj: Observable<any>;
constructor(public af:AngularFire) {
this.authObj = af.auth;
}
signin() {
//I want to make AngularFire2 Authentication token/obj an Observable. So this will keep emitting an Observable
//that return True.... after successful Federated Google Signin. I want my other component to subscribe to this Observable.
return this.authObj.do(val => this.af.auth.login());
this.isAuthenticated = true;
}
}
3 回答
我写了一篇文章,把一些零碎的东西连在一起 . 您可能需要创建如下的Auth服务:
查看AngularFire2 Authentication article了解更多信息 .
只需订阅auth对象,以便在有用户对象时收到通知......
使用
Angular v6
,Firebase v5.0.*
和angularfire2 5 rc 10
,您可以执行以下操作 .直接使用
AngularFireAuth
的authState
将其向下管道并检查用户是否不等于null[1]
.authState
返回Observable<firebase.User>
canActivate()
返回Observable<boolean> | Promise<boolean> | boolean
订阅
authState
将发出null
如果未经过身份验证,则会发出firebase.User
(参见下面的屏幕截图) .我刚刚发现我现在可以使用最新版本执行此操作 - >在
canActivate
中返回Observable<boolean>
...因为在最新版本中虽然在文档中它说canActivate
返回Observable<boolean>
但它给了我很多错误 . 但是现在好了!顺便说一句我只是想分享我在角度v6之前写道路防护的方法 . 使用承诺