Я использую router.beforeEach для защиты некоторого вида. Я забираю моего пользователя перед тем, как войти в свой vue. Я хочу использовать этого пользователя на всех моих аутентифицированных страницах. Как я могу вводить данные в router.beforeEach в моем компоненте vuejs?Как я могу вводить данные в router.beforeEach в моем компоненте vuejs?
Вот мои маршруты определение:
import Vue from 'vue';
import VueRouter from 'vue-router';
import AuthService from './services/AuthService';
import Index from './pages/Index.vue';
Vue.use(VueRouter);
const routes = [
{path: '/', name: 'index', component: Index, meta: {requiresAuth: true}},
...
];
const router = new VueRouter({
routes
});
router.beforeEach((to, from, next) => {
if (to.matched.some(record => record.meta.requiresAuth)) {
AuthService().getUser(user => {
if (user) {
next(vm => {
vm.user = user
});
} else {
...
}
});
}
...
});
export default router;
здесь мой Index.vue
<template>
<div>
{{user}}
</div>
</template>
<script type="text/ecmascript-6">
export default {
data(){
console.log(this.user);
console.log(this.$route.user);
return {}
},
mounted(){
console.log(this.user);
console.log(this.$route.user);
}
}
</script>
Все неопределен
Я не хочу, чтобы сделать beforeRouteEnter
в моем компоненте, потому что это будет сделать второй вызов API.
Вы используете магазин Vuex? –
@TusharArora Если в vue-router нет решения, я буду использовать vuex. На данный момент я стараюсь избегать vuex. –
Вы код отлично работает для меня –