반응형
vue SSR를 사용하여 루트 가드 내의 스토어에 어떻게 액세스합니까?
새로운 프로젝트에서 Vue + SSR를 사용하고 있으며 특정 경로에서 인증을 시행하기 위해 루트 가드를 구현하려고 합니다.나는 다음과 같은 것을 하고 싶다.
function requireAuth(to, from, next) {
if(!store.auth.getters.authenticated){
// redirect to login
}
...
}
하지만 간단하게는 할 수 없다.import
공식 문서에 따라 함수 내에서 각 요청에 대해 새로운 인스턴스를 생성하기 때문에 일반 앱에서와 같이 스토어를 할 수 있습니다.
export function createRouter () {
return new Router({
...
});
}
루트 가드에게 가게를 넘겨줄 방법이 있나요?아니면 제가 완전히 잘못된 각도에서 접근하고 있는 건가요?아무쪼록 잘 부탁드립니다!
좋아, 해결책을 찾긴 했지만 가장 우아한 방법은 아니야이 GitHub 댓글에 영감을 받아...
# router/index.js
createRouter(store) {
const router = new Router({
mode: "history",
routes: [
{
path: "/some-protected-route",
beforeEnter: requireAuth.bind(store)
}
...
});
return router;
}
...
requireAuth(to, from, next) {
const store = this;
if(!store.getters["auth/authenticated"]) { ... }
}
또한 스토어를 createRouter 함수에 전달하는 것도 잊지 마십시오.
# app.js
export default function createApp() {
const store = createStore();
const router = createRouter(store);
sync(store,router)
const app = new Vue({
router,
store,
render: h => h(App)
});
return { app, router, store };
}
또한 기본 로직에서 브라우저 전용 코드를 피하거나 완화하십시오.
언급URL : https://stackoverflow.com/questions/52447289/how-do-you-access-the-store-within-a-route-guard-with-vue-ssr
반응형
'programing' 카테고리의 다른 글
스프링 데이터 JPA - "유형에 대한 속성을 찾을 수 없습니다" 예외 (0) | 2022.08.12 |
---|---|
Vuex 모듈은 다른 Vuex 모듈을 감시할 수 있습니까? (0) | 2022.08.12 |
VueJs 모듈 빌드 실패:오류: 디렉토리를 기준으로 사전 설정된 "@vue/app"을 찾을 수 없습니다. (0) | 2022.08.12 |
= (a+b) - (b=a)가 두 정수를 스왑하는 데 좋지 않은 이유는 무엇입니까? (0) | 2022.08.12 |
Vuex 오류 및 클릭 후 작업 (0) | 2022.08.12 |