首页 文章

如何从angularfire2获取当前登录的身份验证状态/用户

提问于
浏览
11

我有一个ionic2应用程序,并使用Firebase和angularFire2 . 我想使用angularFire2从firebase获取当前的身份验证状态和当前的auth对象/用户 .

这是迄今为止的工作 - 我可以对用户进行身份验证并订阅FirebaseAuthState以获取facebook用户对象 .

constructor(platform: Platform, private auth: FirebaseAuth) {

    auth.subscribe((user: FirebaseAuthState) => {
      if (user) {
        // I could store user in localstorage, but I'd like to see an All Firebase solution
        this.rootPage = TabsPage;
      } else {
        this.rootPage = LoginPage;
      }
    });

现在我可以在这里设置localstorage并缓存我的用户对象以记住身份验证状态 . 但是,我很想知道如何在没有实现自己的自定义本地存储密钥的情况下才能使用Firebase . 我看到Firebase存储了它自己的localStorage密钥,因此知道它已登录 .

如何从代码中获取auth对象?另外,我尝试在AngularFire2文档中列出的示例来渲染模板中的auth状态 - 但这给了我一个错误 .

import {FirebaseAuth} from 'angularfire2';
@Component({
  selector: 'auth-status',
  template: `
    <div *ng-if="auth | async">You are logged in</div>
    <div *ng-if="!(auth | async)">Please log in</div>
  `
})
class App {
  constructor (@Inject(FirebaseAuth) public auth: FirebaseAuth) {}
}

3 回答

  • 4

    当前的身份验证状态可从注入的 FirebaseAuth 获得 . 你可以获得实际的身份验证数据 auth.getAuth()

    见:https://github.com/angular/angularfire2/blob/master/src/providers/auth.ts#L99

  • 15
    • 导入: import { AngularFireAuth } from 'angularfire2/auth';

    • 注入: constructor(public afAuth: AngularFireAuth) { }

    • 检查:

    this.afAuth.authState.subscribe(res => {
      if (res && res.uid) {
        console.log('user is logged in');
      } else {
        console.log('user not logged in');
      }
    });
    
  • 22

    现在,为了获取用户信息,您必须订阅获取身份验证信息 . 防爆

    constructor(public af: AngularFire) {
        this.af.auth.subscribe(auth => console.log(auth));// user info is inside auth object
      }
    

    如果auth状态不存在,则auth对象将为null

相关问题