Данные анонимной аутентификации Firebase были сброшены при использовании Safari в iOS и немедленно перезагружены в Nuxt.js

#javascript #firebase #firebase-authentication #nuxt.js

# #javascript #firebase #firebase-аутентификация #nuxt.js

Вопрос:

Я сделал простой код, подобный следующему в 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.
Я хочу, чтобы они вели себя одинаково.

Пожалуйста, дайте мне знать, если у вас есть какие-либо хорошие идеи.

Комментарии:

1. Теперь я понял, что это также произойдет в vue.js , а также обратите внимание, что этого не произойдет, когда я полностью очистил кэш в safari. Я пытался очистить кеш только той страницы, которую я создал, но не целые данные. Но я думаю, что трудно сказать клиенту очистить кеш, поэтому сейчас я все еще ищу способ избежать этого вопроса.