如何在不要求的情况下在firebase-auth的首次加载中获取currentUser

时间:2019-01-16 07:18:13

标签: firebase authentication vue.js firebase-authentication

我正在使用Firebase身份验证,我的导航栏取决于用户是否登录。当我加载网站时,如果用户之前未注销,他仍然应该保持登录状态。但是Firebase onAuthStateChanged侦听器会在100-300ms后返回用户,因此我的导航栏无法确定用户是否已登录。导航栏显示300ms的登录和注册按钮,然后firebase返回用户,导航栏显示仪表板和注销按钮。

我正在使用vue,我曾尝试将UID和用户名保存在localstorage上,但我担心安全性。如果有人手动更改了本地存储数据怎么办?此外,用户可能会注销,但保持登录状态,这是我手动设置的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 个答案:

答案 0 :(得分:0)

无论如何,我将其保存在cookie中。网站加载时,如果存在cookie,则呈现Navbar就像用户登录一样,然后在Firebase侦听器返回后再次检查