Javascript vue路由器在每次之前清除VueJS令牌
我有一个带有Vuetify框架的VueJS应用程序,它连接到Jhipster Java后端 在此帮助下,我使用Vuex存储用户身份验证令牌,将令牌存储在Javascript vue路由器在每次之前清除VueJS令牌,javascript,vuejs2,jwt,jhipster,vuex,Javascript,Vuejs2,Jwt,Jhipster,Vuex,我有一个带有Vuetify框架的VueJS应用程序,它连接到Jhipster Java后端 在此帮助下,我使用Vuex存储用户身份验证令牌,将令牌存储在localStorage上 我的问题是,每当我复制正在处理的选项卡时,beforeach函数会触发两次,并在第二次执行时清除令牌,并指向登录页面,如果我关闭选项卡并尝试重新打开它,同样适用 这是用户登录store.js时的代码: 然后我在main.js中的代码检查令牌是否存在: vue路由器中的beforeach功能: 每次登录应用程序时,
localStorage
上
我的问题是,每当我复制正在处理的选项卡时,beforeach
函数会触发两次,并在第二次执行时清除令牌,并指向登录页面,如果我关闭选项卡并尝试重新打开它,同样适用
这是用户登录store.js
时的代码:
然后我在main.js
中的代码检查令牌是否存在:
vue路由器中的beforeach
功能:
每次登录应用程序时,我都会获得令牌并重定向到仪表板页面:
to: /dashboard user: true auth: true
logged: eyJhbGciOiJ....
但是,当我复制该选项卡或关闭并重新打开该选项卡时:我得到以下信息:
token exists
to: /dashboard user: true auth: true
logged: eyJhbGciOiJIUzUxM...
to: /login user: false auth: false
exception
我注意到每个
之前的执行了两次。如果在此之后我尝试刷新第一个页面,则会清除令牌并重定向到登录。Vuex存储数据会被重置如果您打开新选项卡或刷新页面,则不会持续,这就是为什么你应该使用localStorage@Luigi我使用的是LocalStorages问题是每次刷新或打开新选项卡时,vuex存储数据都会被重置,存储值不会在用户强制刷新页面时保持不变,除非您依赖本地存储作为第一个验证源。如果您打开新选项卡或刷新页面,Vuex存储数据将被重置,它不会持续存在,这就是为什么您应该使用localStorage@Luigi我使用的是LocalStorages问题是每次刷新或打开新选项卡时,vuex存储数据都会被重置,不幸的是,除非您依赖本地存储作为第一个验证源,否则在用户强制进行页面刷新时,存储值不会保持不变。
router.beforeEach((to, from, next) => {
let currentUser = store.getters.isLoggedIn;
let requiresAuth = to.matched.some(record => record.meta.requiresAuth);
console.log("to: "+to.path+" user: "+currentUser+ " auth: "+requiresAuth);
if (requiresAuth && currentUser){
console.log("logged: "+store.state.token);
next();
}
else if (requiresAuth && !currentUser){
console.log("not logged: "+store.state.token);
next('/login');
}
else if (!requiresAuth && currentUser){
console.log("rediect: "+store.state.token);
next('/dashboard');
}
else{
console.log("exception")
next();
}
})
to: /dashboard user: true auth: true
logged: eyJhbGciOiJ....
token exists
to: /dashboard user: true auth: true
logged: eyJhbGciOiJIUzUxM...
to: /login user: false auth: false
exception