Javascript Vue路由器:功能推送不适用于商店修改

Javascript Vue路由器:功能推送不适用于商店修改,javascript,vue.js,vuejs2,vue-router,vue-storefront,Javascript,Vue.js,Vuejs2,Vue Router,Vue Storefront,我的Vue应用程序与路由器在身份验证时有问题,但仅在第一页加载时 我的所有路由都在中间件下,以检查它们是否已被记录,因此我的路由器如下所示: 从“Vue”导入Vue 从“vue路由器”导入路由器 从“./store”导入存储 Vue.use(路由器); 让路由器=新路由器({ 模式:“历史”, 路线:[ { 路径:“/”, 名称:'根', 组件:resolve=>require(['./views/Root.vue'],resolve), 元:{ pageTitle:`Index`, } },

我的Vue应用程序与路由器在身份验证时有问题,但仅在第一页加载时

我的所有路由都在中间件下,以检查它们是否已被记录,因此我的路由器如下所示:

从“Vue”导入Vue
从“vue路由器”导入路由器
从“./store”导入存储
Vue.use(路由器);
让路由器=新路由器({
模式:“历史”,
路线:[
{
路径:“/”,
名称:'根',
组件:resolve=>require(['./views/Root.vue'],resolve),
元:{
pageTitle:`Index`,
}
},
{
路径:'/authentication/',
名称:“身份验证”,
组件:resolve=>require(['./views/Login.vue'],resolve),
元:{
页面标题:`Connexion`,
authNotRequired:true,
}
},
],
});
路由器.beforeach((到、从、下一个)=>{
//这是作者的作品:
如果(!store.getters.isLoggedIn&&!to.matched.some(r=>r.meta.authNotRequired)){
下一步({name:'身份验证'});
}
否则{
next();
}
});
导出默认路由器;
我的会话存储非常简单:

从“Vue”导入Vue
从“Vuex”导入Vuex
从“vuex持久化”导入VuexPersist
Vue.use(Vuex);
const vuexLocalStorage=新VuexPersist({
钥匙:“我的.个人的.钥匙”,
存储:window.localStorage,
})
导出默认的新Vuex.Store({
插件:[vuexLocalStorage.plugin],
声明:{
会议:{
sessionId:null,
},
},
吸气剂:{
伊斯洛格丁:(州)=>{
返回(state.session.sessionId!==null);
},
},
突变:{
保存(状态、会话){
state.session=会话;
},
摧毁(国家){
state.session={};
},
},
行动:{
保存(上下文、有效负载){
返回新承诺((解决、拒绝)=>{
commit('save',有效载荷);
解决();
});
},
销毁(上下文){
返回新承诺((解决、拒绝)=>{
commit('destroy');
解决();
});
}
}
});
因此,我的登录功能也非常简单:

/*表单已成功发送到回答{obj.id:456}的API*/
onLogIn(obj){
这个.$store.dispatch('save',{sessionId:obj.id})。然后(()=>{
这是.$router.push({name:'root'});
});
},
因此,当应用程序已经启动时,此代码可以正常工作,如果我断开连接并重新连接,重定向可以正常工作。。。几乎所有的东西都运转得很好。。。 但是当用户第一次加载页面并登录时,路由器没有推送新路由,因此用户停留在身份验证页面上,但会话已更改(如果我将console.log放入存储中,则会话ID已存在)

我真的不明白为什么重定向在第一次加载时不起作用,我发现当我执行localStorage.clear()然后重新加载页面并尝试连接时,它也不起作用


您知道它为什么这样做吗?

在创建vue实例以全局访问它时,是否在main.js中添加了路由器?是的!新的Vue({store,router,render:h=>h(App)})。$mount('#App')以及导入行?(从“/router”导入路由器)确切地说:从“/router.js”导入路由器;首先使用console.log(this.$router.options.routes)检查可用路由;并进一步调试。