如何存储firebase身份验证会话

Posted

技术标签:

【中文标题】如何存储firebase身份验证会话【英文标题】:How to store firebase authentication session 【发布时间】:2021-11-14 15:05:52 【问题描述】:

我有一个使用 firebase 身份验证在 vue 中制作的 Web 应用程序。这里的问题是我每次重新加载页面都需要登录。

【问题讨论】:

【参考方案1】:

Firebase 身份验证默认将用户的凭据存储在浏览器的本地存储中,并在页面重新加载时从那里恢复。不过,这需要调用服务器,这意味着如果您在页面加载时立即访问Firebase.auth().currentUser,它可能尚未设置。

为防止出现此问题,请使用getting the current user 上文档的第一个 sn-p 中所示的身份验证状态侦听器。

对于 v8 及更早版本的 SDK:

firebase.auth().onAuthStateChanged((user) => 
  if (user) 
    // User is signed in, see docs for a list of available properties
    // https://firebase.google.com/docs/reference/js/firebase.User
    var uid = user.uid;
    // ...
   else 
    // User is signed out
    // ...
  
);

对于 v9:

import  getAuth, onAuthStateChanged  from "firebase/auth";

const auth = getAuth();
onAuthStateChanged(auth, (user) => 
  if (user) 
    // User is signed in, see docs for a list of available properties
    // https://firebase.google.com/docs/reference/js/firebase.User
    const uid = user.uid;
    // ...
   else 
    // User is signed out
    // ...
  
);

【讨论】:

以上是关于如何存储firebase身份验证会话的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法让一个人在跨子域的 firebase 上进行身份验证

Firebase 身份验证会话未过期 [重复]

Firebase - 一小时后丢失身份验证会话

如何在 vue 上处理 Firebase 身份验证

从 iOS 容器应用与应用扩展共享 Firebase 身份验证会话

Firebase 存储身份验证