如何在不请求的情况下在firebase-auth中首次加载时获取currentUser
Posted
技术标签:
【中文标题】如何在不请求的情况下在firebase-auth中首次加载时获取currentUser【英文标题】:How to get currentUser on first load in firebase-auth without requesting 【发布时间】:2019-06-10 05:53:36 【问题描述】:我正在使用 firebase 身份验证,我的导航栏取决于用户是否登录。当我加载网站时,如果用户之前没有注销,他应该仍然保持登录状态。但是,Firebase onAuthStateChanged 监听器在 100-300 毫秒后返回用户,所以我的导航栏无法确定用户是否登录。所以,导航栏显示登录和注册按钮 300 毫秒,然后 firebase 返回用户,导航栏显示仪表板和注销按钮。
我正在使用 vue,我尝试在本地存储中保存 UID 和用户名,但我担心安全性。如果有人手动更改本地存储数据怎么办?此外,用户可以注销,但保持登录状态,我手动设置 localStorage.setItem('user', ....)
Navbar.vue
<div v-if="user.uid" class="flex row space-b">
// userpic, photo, logout button
</div>
<div v-else>
// login and signup button
</div>
vuex
state:
user:
uid: null,
photoURL: null,
username: null,
,
,
我尝试在 onAuthStateChanged 侦听器返回某些内容之前不挂载 Vue 实例,但这不是一个好的解决方案,因此我将网站渲染延迟了近 300 毫秒。
【问题讨论】:
【参考方案1】:无论如何,我把它保存在 cookie 中。当网站加载时,如果 cookie 存在,我会像用户登录一样呈现导航栏,然后在 firebase 侦听器返回后仔细检查
【讨论】:
效果不佳,现在我不会在导航栏上显示任何内容,直到侦听器返回 如果用户处于隐身模式怎么办,这不是解决方案。以上是关于如何在不请求的情况下在firebase-auth中首次加载时获取currentUser的主要内容,如果未能解决你的问题,请参考以下文章
如何在不通过 HTTP 加载图像的情况下在 HTML 中显示“重新加载”符号?
如何在不设置 lambda 的情况下在 apigateway http_proxy 上添加 CORS?
Spring Boot - 如何在不使用 spring 注释的情况下在运行时获取端口