【问题标题】:How firebase authentication works?Firebase 身份验证如何工作?
【发布时间】:2018-11-30 03:22:07
【问题描述】:

一旦我执行了

firebase.auth().signInWithEmailAndPassword(email, password).then((user) => {
    // here I save user to redux and set loggedIn to true
});

我已登录。下一步是什么?我的建议... 登录后进入 App 的主流程,在 App.js 中执行 onAuthStateChanged()。如果我仍然得到用户,我仍然登录,如果没有,我将登录键设置为 false 并将用户重定向到登录屏幕。 接下来,我使用 Redux persist 在 App 的不同启动之间保存 loggedIn 键。

但是什么时候(除了我自己注销)我会被注销? firebase 端的身份验证会话(如果存在)的生命周期是多少?它是如何工作的?

【问题讨论】:

  • “firebase 端的身份验证会话(如果存在)的生命周期是多少?” Firebase 身份验证会话没有过期间隔。它们一直持续到用户退出,或者直到有另一个需要他们重新验证的令人信服的事件(例如,其他地方的密码更改)。见stackoverflow.com/questions/37907096/…
  • 好的,知道了。我总是默认登录。我通过在 App.js 中执行 onAuthStateChnged 来检查它,对吗?这样每次应用程序加载用户时,都会在应用程序连接到 Firebase 服务器时看到微调器,以检查用户是否仍然登录以及是否没有任何强制用户退出的操作。
  • 听起来是对的。但是如果不看代码就很难确定。请注意,在 React Native 上保持身份验证状态一直很棘手,因此如果您遇到问题,请务必使用reproduces where you are stuck 的最少代码回帖。

标签: firebase react-native firebase-authentication


【解决方案1】:

.onAuthStateChanged() 驱动您应用的登录状态。这就是它的工作原理。

firebase.auth().onAuthStateChanged(function (user) {
    if(user){
      //unhide non-public elements
    } else {
      //hide public elements
    }
});

然后,您可以使用 Firebase 安全规则来控制谁可以访问哪些信息。

【讨论】:

  • 隐藏和取消隐藏元素通常看起来如何?它是否应该是所有元素的列表,并且每个元素都应该是一些标志“公共”,然后应用程序要么显示它吗?
  • 我通过 CSS 类来实现。例如,将class="account-holder" 添加到仅应向已登录用户显示的任何元素。然后,您可以触发一个函数 function showAccountHolderElements(),它会从所有这些函数中删除 hidden/display:none 类。
猜你喜欢
  • 2016-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-11
  • 1970-01-01
  • 1970-01-01
  • 2013-06-02
  • 2011-11-19
相关资源
最近更新 更多