firebase身份验证是如何工作的?

firebase身份验证是如何工作的?,firebase,react-native,firebase-authentication,Firebase,React Native,Firebase Authentication,一旦我执行 firebase.auth().signInWithEmailAndPassword(email, password).then((user) => { // here I save user to redux and set loggedIn to true }); 我已登录。接下来呢?我的建议。。。 登录后,我进入应用程序的主流程,并在App.js中执行onAuthStateChanged。若我仍然得到用户,我仍然登录,若并没有,我将loggedinkey设置为f

一旦我执行

firebase.auth().signInWithEmailAndPassword(email, password).then((user) => {
    // here I save user to redux and set loggedIn to true
});
我已登录。接下来呢?我的建议。。。 登录后,我进入应用程序的主流程,并在App.js中执行onAuthStateChanged。若我仍然得到用户,我仍然登录,若并没有,我将loggedinkey设置为false,并将用户重定向到登录屏幕。 接下来,我将使用Redux persist在不同的应用程序启动之间保存loggedIn键


但如果我不自己登出,我会登出吗?如果身份验证会话存在于firebase端,它的生命周期是什么?如何工作?

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

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

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

如果身份验证会话存在于Firebase端,它的生命周期是什么?Firebase身份验证会话没有过期时间间隔。它们会一直持续到用户注销,或者直到出现另一个引人注目的事件,例如,其他地方的密码更改需要用户重新验证。好的,明白了。默认情况下,我始终登录。我通过在App.js中执行OnAuthStatechned来检查它,对吗?因此,每次应用程序加载时,当应用程序连接到firebase服务器时,用户都会看到spinner,以检查用户是否仍然登录,以及是否没有任何操作迫使用户注销。这听起来是正确的。但是如果没有看到代码,就很难确定。请注意,在React Native上持久化auth状态在历史上是很棘手的,因此如果您有问题,请确保使用最少的代码返回。隐藏和取消隐藏元素通常看起来如何?它是否应该是所有元素的列表,并且每个元素都应该有一些标志“public”,然后应用程序是否显示它?我通过CSS类来实现。例如,将class=accountholder添加到任何只应向登录用户显示的元素中。然后可以启动一个函数showAccountHolderElements,该函数将从所有函数中删除隐藏的/display:none类。