前提・実現したいこと
ログイン認証していない状態でログイン後の画面にアクセスしようとした時に、
ログイン画面にリダイレクトするようにしたい。
発生している問題・エラーメッセージ
Uncaught (in promise) Error: Infinite redirect in navigation guard at eval
該当のソースコードを実行した時に上記のようなエラーが出てきます。
該当のソースコード
javascript
1import { createApp } from 'vue'; 2import App from './App.vue'; 3import router from './router'; 4import store from './store/store' 5import firebase from 'firebase'; 6import config from './firebase.config'; 7 8firebase.initializeApp(config); 9 10const app = createApp(App); 11app.use(router); 12app.use(store); 13app.mount('#app'); 14 15//ログイン認証されていない場合にログイン画面にリダイレクトする処理 16router.beforeEach((to, from, next) => { 17 if (to.path === '/home') { 18 firebase.auth().onAuthStateChanged(user => { 19 if (user) { 20 next('/home') 21 } else { 22 next('/') 23 } 24 }) 25 } else { 26 next(); 27 } 28});
↓router.js
javascript
1import { createRouter, createWebHistory } from 'vue-router'; 2import Login from './components/Login'; 3import SignUp from './components/SignUp'; 4import Home from './components/Home'; 5 6const router = createRouter({ 7 history: createWebHistory(), 8 routes: [ 9 { path: '/', component: Login }, //ログイン画面のパス 10 { path: '/signup', component: SignUp }, //新規登録画面のパス 11 { path: '/home', component: Home }, //ログイン後の画面のパス 12 ], 13}); 14 15export default router;
上記の通り自分なりのコードを書いてみたのですが、なかなか上手くいかない状況です。
onAuthStateChangedでユーザー情報を確認するのではなく、別でフラグを用意した方がいいのでしょうか?
ご教示いただけると助かります????♂️
あなたの回答
tips
プレビュー