Firebase - 始终检查用户是不是登录的最佳方式?

Posted

技术标签:

【中文标题】Firebase - 始终检查用户是不是登录的最佳方式?【英文标题】:Firebase - Best way to always check if a user is logged in?Firebase - 始终检查用户是否登录的最佳方式? 【发布时间】:2019-04-10 06:45:41 【问题描述】:

我正在使用 Firebase 处理一个 React 项目,我想知道始终确认用户已登录的最佳方法是什么?

我目前所做的是在每个登陆页面上,检查用户是否已登录以及用户是否已登录,然后继续该页面,如果没有用户登录,则将用户带到登录处页面。

但是,我觉得必须有一个更有效的方法,我想知道这里有没有人熟悉这个?

在这里使用商店是最佳方式吗?例如。检查用户是否登录过一次,然后更新商店,然后始终询问商店用户是否已登录,而不是 ping Firebase 以查看用户是否已登录。

感谢您的帮助!

【问题讨论】:

我建议使用onAuthStateChanged,不仅可以检查用户是否登录,还可以在您的商店中驱动连接组件的身份验证状态/标志/订阅。当身份验证状态发生更改时调度操作以相应地更新您的商店。然后,您可以在一个简单的级别上使用条件逻辑来重定向或有条件地显示内容。 如果你有一个 Redux 商店,你不需要在每个登陆页面上都检查这个。例如,您可以在应用加载时初始化 onAuthStateChanged(),并在实时登录或注销时更新商店属性。如果它发生变化,只要您的登录页面使用connect(),您就可以在必要时使用条件渲染、在生命周期方法和/或在动作创建者中重定向或取消订阅(从 RTDB 事件)。使用react-router-dom 之类的东西,您可以传递商店的登录/注销验证。 @AlexanderStaroselsky 谢谢亚历克斯,这正是我想知道的。我会对此进行更多研究 :-) 谢谢! 【参考方案1】:

您应该为 onAuthStateChange 添加一个侦听器,并在登录与退出时执行适当的操作。 https://firebase.google.com/docs/auth/web/manage-users.

firebase.auth().onAuthStateChanged(function(user) 
if (user) 
  // User is signed in.
 else 
  // No user is signed in.

);

【讨论】:

我目前正在执行上面的确切调用,但是对于每个登录页面,我只是想知道这是否是检查用户是否登录或退出的唯一解决方案? 你把它放在你树上某处的componentDidMount中,它会继续监听直到你关闭它。 但是是的,这是首选方式。 谢谢!这很有帮助

以上是关于Firebase - 始终检查用户是不是登录的最佳方式?的主要内容,如果未能解决你的问题,请参考以下文章

Firebase Facebook登录检查用户是不是存在

检查用户是不是已经在浏览器中使用 Firebase 登录 [重复]

Firebase - 检查使用 Google 帐户创建的用户是不是正在注册或登录?

如何检查用户是不是在客户端使用 Firebase 登录? [关闭]

如何在中间件中使用会话来始终检查用户是不是登录

检查用户是不是登录 Flutter & firebase auth |