現在生じている現象は以下の通りです。
ログインしていない場合に、/
→ /auth/login
のリダイレクトはできるのですが、
ログインしている場合に、 /auth/login
→ /
のリダイレクトが効きません。
①はじめログインしていない状態でトップページにアクセス→ログインページにリダイレクト。
②そのあとログイン後にログインページにアクセス→そのままログインページが表示される。
②がなぜ起こるのかがわかりません。
Nuxt.jsのプロジェクトで認証機能をつけるために、middleware/Authenticated.jsを以下の様に記述しました。
Authenticated
1import firebase from "~/plugins/firebase"; 2 3export default function({ store, route, redirect }) { 4 firebase.auth().onAuthStateChanged(user => { 5 const currentPath = route.path; 6 if (user) { 7 console.log(currentPath); 8 //ログインしている時の処理 9 if (currentPath === "/auth/login" || currentPath === "/auth/signup") { 10 store.commit("resetErrors"); 11 console.log("you are already logged in"); 12 redirect("/"); 13 } 14 } else { 15 //ログインしてない時の処理 16 console.log(currentPath); 17 if (currentPath !== "/auth/login" && currentPath !== "/auth/signup") { 18 store.commit("resetErrors"); 19 console.log("you are not logged in yet!"); 20 redirect("/auth/login"); 21 } 22 } 23 }); 24} 25
Authencticated.jsの読み込みについては、nuxt.config.jsで以下の追記してます。
Config
1router: { 2 middleware: 'Authenticated', 3},
原因が分かる方が入れば、是非教えていただければ嬉しいです。
よろしくお願いいたします。
●補足情報
vuex-persisitedstateを削除し、Authenticated.jsを以下のように編集し、再度試してみたのですがうまくいきませんでした。。。泣
Authenticated
1import firebase from "~/plugins/firebase"; 2 3export default function({ store, route, redirect }) { 4 firebase.auth().onAuthStateChanged(user => { 5 const currentPath = route.path; 6 if (user) { 7 //ログインしている時の処理 8 //まずデータベースの内容をstoreに保存 9 firebase 10 .database() 11 .ref(user.uid) 12 .on('value', res => { 13 const userInfo = { 14 uid: res.uid, 15 name: res.name, 16 email: res.email 17 } 18 store.commit('setUser', userInfo); 19 }) 20 store.commit("resetErrors"); 21 //不正なアクセスを除去 22 if (currentPath === "/auth/login") { 23 redirect("/"); 24 } 25 } else { 26 //ログインしてない時の処理 27 store.commit("resetErrors"); 28 //不正なアクセスを除去 29 if (currentPath !== "/auth/login" && currentPath !== "/auth/signup") { 30 redirect("/auth/login"); 31 } 32 } 33 }); 34} 35
全く検討がつきません。。。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。