【问题标题】:Firebase session management using a php web application使用 php Web 应用程序进行 Firebase 会话管理
【发布时间】:2018-10-03 12:13:55
【问题描述】:

我正在使用 phpcodeigniter 以及用于实时数据库的 firebase 开发 Web 应用程序。

在我的 codeigniter 视图中,我使用 javascript 代码来管理 firebase 身份验证。

以下代码我用于通过电子邮件管理 firebase 登录。

 function login(){

  var userEmail = "abcd@gmail.com" ;
  var userPass = "password";

  const fr = firebase.auth().signInWithEmailAndPassword(userEmail, userPass).catch(function(error) {
    // Handle Errors here.
    console.log("got error");
    var errorCode = error.code;
    var errorMessage = error.message;

    window.alert("Error : " + errorMessage);

    // ...
  });

当我调用 login() 时,我已经实现了 Firebase AuthStateChangeListner 我在以下函数中获取用户对象。

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    // User is signed in.
    console.log("signin");
    console.log(user);
  } else {
    // No user is signed in.
    console.log("no sign");
  }
});

在页面加载时,我正在调用登录函数获取成功的用户对象。

$(function(){
    login();
});

现在的问题是,如果我移动到另一个页面并尝试像这样访问当前用户对象,那么我会得到一个 null。

var user = firebase.auth().currentUser;

如何跨多个页面重定向管理 firebase 登录会话?

【问题讨论】:

    标签: javascript codeigniter firebase firebase-authentication


    【解决方案1】:

    要获取当前用户,请始终使用状态更改侦听器。这是因为获取用户配置文件可能需要往返服务器,因此是异步发生的。

    所以在新页面中,只需使用与之前相同的代码即可:

    firebase.auth().onAuthStateChanged(function(user) {
      if (user) {
        console.log(user);
      } else {
        console.log("not signed in");
      }
    });
    

    【讨论】:

      猜你喜欢
      • 2015-11-04
      • 2012-12-15
      • 1970-01-01
      • 2019-04-19
      • 2023-03-12
      • 2018-03-03
      • 2010-12-12
      • 1970-01-01
      • 2020-04-01
      相关资源
      最近更新 更多