开发者问题收集

页面重新加载时 firebase currentUser 为空

2020-04-24
1262

我使用 firebase 进行身份验证。每次在向后端发出请求之前,我都会请求 idToken。

service.interceptors.request.use(async request => {
  const token = await firebase.auth().currentUser.getIdToken();
  if (!token && request.url !== '/signIn' && request.url !== '/register') {
    toast.error('Not authenticated');
    return;
  }
  request.headers.Authorization = 'Bearer ' + token;
  return request;
});

此外,我还有一个向后端发出的请求,它将在我的 vue 组件的已安装挂钩中运行。

mounted() {
   plantService.getPlants().then(data => (this.suspicionList = data));
}

通常,这有效,但问题是,当我刷新页面时,firebase.auth().currentUser 为空,请求将失败,因此不会返回任何数据。

我已经尝试创建一个计算属性并在观察器中观察它。但没有用。 此外,我的 main.js 文件中有一个用户观察器,如下所示:

firebase.auth().onAuthStateChanged(user => {
  store.dispatch('FETCH_USER', user);
});

有人有想法吗?

谢谢!

1个回答

如果我正确理解了您的问题,则以下内容应该可以解决问题:

mounted() {
    firebase.auth().onAuthStateChanged(user => {
        if (user) {
           plantService.getPlants().then(data => (this.suspicionList = data));
        }
    });
}
Renaud Tarnec
2020-04-24