首页 > 解决方案 > 在 iOS 中使用 safari 并立即在 Nuxt.js 中重新加载时,Firebase 匿名身份验证数据已重置

问题描述

我在 Nuxt.js 中编写了一个简单的代码,如下所示。

<template>
  <div>
    uid:{{ user.uid }}
  </div>
</template>

<script>
import firebase from "firebase";

export default {
  data() {
    return {
      user: {}
    };
  },

  mounted: function() {
    this.initFirebase();
  },

  methods: {
    initFirebase: function() {
      if (!firebase.apps.length) {
        firebase.initializeApp({
          apiKey: process.env.API_KEY,
          authDomain: process.env.AUTH_DOMAIN,
          databaseURL: process.env.DATABASE_URL,
          projectId: process.env.PROJECT_ID,
          storageBucket: process.env.STORAGE_BUCKET,
          messagingSenderId: process.env.MESSAGING_SENDER_ID
        });
      }
      firebase.auth().onAuthStateChanged((user) => {
        if (user) {
          this.user = user
          console.log("authed");
        } else {
          console.log("authing");
          firebase.auth().signInAnonymously()
        }
      });
    },
  }
};
</script>

我希望这段代码只会验证一次,并且 UID 在以后的访问中永远不会改变。
它工作得几乎完美,但在 iOS 和 Safari 中结合使用,当我访问此页面时 UID 会发生变化,并在 UID 显示后立即重新加载。
我清除了 safari 的缓存并尝试了几次,并注意到如果我等待 10 或 20 秒,这不会发生。如果UID一旦改变,它就永远不会改变。
我从未在 Android 或 iOS 中的任何其他浏览器(例如 chrome)中看到过这种情况。
我希望这些行为相同。

如果您有任何好的想法,请告诉我。

标签: javascriptfirebasefirebase-authenticationnuxt.js

解决方案


推荐阅读