Apa masalah tepatnya?

Saya sedang membangun aplikasi otentikasi dengan vue.js. Ketika saya berurusan dengan rute aman, saya mengalami masalah bahwa fungsi 'beforeEnter' mengambil nilai default dari vuex. Ini bermasalah karena membuat saya tidak dapat membuat rute yang aman. Saya akan senang atas bantuan Anda!

Berikut adalah file rute

import { createRouter, createWebHistory } from 'vue-router'
import store from '../store/index'
const routes = [
  {
    path: '/globalData',
    name: 'GlobalData',
    component: () => import('../views/GlobalData.vue'),
    beforeEnter: (_, __, next) => {
      if (!store.state.isLoggedIn) {
        next('/about')
      }else {
        next()
      }
    }
  },
]

const router = createRouter({
  history: createWebHistory(process.env.BASE_URL),
  routes
})


export default router

Ini toko saya

import { createStore } from 'vuex'

// Create a new store instance.
const store = createStore({
    state () {
        return {
            isLoggedIn: false,
        }
    },
    mutations: {
        setIsLoggedIn(state, bool) {
            state.isLoggedIn = bool;
        }
    }
})

export default store;

Berikut adalah bagaimana perubahanLoggedIn

import{ onBeforeMount, ref } from 'vue'
import fire from '@/firebase';
import { useStore } from 'vuex'


export default {
  setup() {

    const store = useStore()

    onBeforeMount(() => {
      fire.auth().onAuthStateChanged((user) => {
        if (user) {
          store.commit('setIsLoggedIn', true)
          
        }else {
          store.commit('setIsLoggedIn', false)
        }
      })
    })

  }
}

Saya pikir masalah saya entah bagaimana dapat dihubungkan dengan fakta bahwa sebelum vuex diperbarui, saya ingin mengarahkan ulang ke rute lain dan akibatnya dibutuhkan nilai default. Terima kasih untuk bantuannya!

0
Porfinogeneta 4 April 2021, 21:16

1 menjawab

Jawaban Terbaik

Pola umum adalah memiliki rute yang menangani login pengguna dan rute ini bersifat publik. Dari rute ini Anda dapat mengalihkan ke rute lain setelah login, dan rute yang dilindungi akan dialihkan ke login saat tidak ada pengguna yang login.

Logikanya: Pengguna yang tidak sah mendarat di rute yang dilindungi A, sebelum masuk, router dialihkan ke login, setelah otorisasi berhasil, login dialihkan ke A lagi.

Bagaimana cara login mengetahui rute mana yang dialihkan setelah login?? Anda dapat mengirim nama rute yang dialihkan sebagai parameter rute atau kueri, atau Anda dapat menyimpan rute yang diharapkan di penyimpanan dan login dialihkan ke apa pun yang ditemukan di parameter, kueri, atau penyimpanan.

1
Roberto Langarica 4 April 2021, 18:31