我正在使用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毫秒。
答案 0 :(得分:0)
无论如何,我将其保存在cookie中。网站加载时,如果存在cookie,则呈现Navbar就像用户登录一样,然后在Firebase侦听器返回后再次检查