Хорошо, я нашел решение, но оно не самое элегантное.Вдохновленный этим комментарием к 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 };
}
Также убедитесь, чточтобы избежать / смягчить любой код только для браузера в базовой логике.