반응형
초기 페이지 로드 시 사용자 가져오기 - Nuxt 미들웨어
Nuxt 앱에서 Firebase Auth를 사용하고 있는데 보호된 경로에 문제가 있습니다.사용자가 로그인했는지 여부에 따라 리디렉션을 처리하는 nuxt 미들웨어가 활성화되어 있습니다.
문제는 주소 표시줄에서 보호된 경로를 방문하여 이전에 로그아웃한 경우 해당 경로에 액세스할 수 있다는 것입니다.그러나 해당 경로에서 다른 보호된 경로를 방문하려고 하면 리디렉션됩니다.로그인한 사용자를 처리하기 위해 Vuex를 사용하고 있습니다.
보호된 경로를 위해 미들웨어를 '콜드 스타트' 상태로 만들려면 어떻게 해야 합니까?
미들웨어:router-auth.js
export default function({ store, redirect, route }) {
const user = JSON.parse(store.state.Authentication.user)
console.log(user);
user !== null && route.name === '/' ? redirect('/dashboard') : ''
//user === null && route.name !== '/' ? redirect('/dashboard') : ''
}
플러그인:auth.js
import firebase from "firebase/app";
import "firebase/auth";
export default function ({store, router}) {
firebase.auth().onAuthStateChanged((user) => {
if(user){
store.dispatch('Authentication/SET_USER',JSON.stringify(user))
}else{
store.dispatch('Authentication/SET_USER', null)
}
})
}
Vuex:Authentication.js
export const state = () => ({
user: ''
});
export const getters = {
user: state => {
return state.user;
},
}
export const mutations = {
SET_USER: (state, payload) => {
state.user = payload;
},
}
export const actions = {
SET_USER({ commit }, payload) {
commit('SET_USER', payload)
},
}
미들웨어에서는 다음 에러 펑크콜을 반환할 수 있습니다.
export default function({ store, redirect, route, error }) {
const accessDenied = true // ... your access route logic goes here
if (accessDenied) {
return error({
message: 'access denied',
statusCode: 403
})
}
}
언급URL : https://stackoverflow.com/questions/64268167/get-user-on-initial-page-load-nuxt-middleware
반응형
'programing' 카테고리의 다른 글
Vuex를 사용할 때 잘못된 점은 무엇입니까?가게? (0) | 2022.08.10 |
---|---|
Vue의 v-for 루프 내에서 항목을 console.log하는 방법 (0) | 2022.08.10 |
날짜를 "11일", "21일" 또는 "23일"(정규 표시기)으로 어떻게 포맷합니까? (0) | 2022.08.10 |
하위 디렉토리에 VueJS App 배포 (0) | 2022.08.10 |
빈 후 변수를 NULL로 설정 (0) | 2022.08.10 |