1、新建common.js
export default {
global: {}
}
2、login.vue登录成功后,赋值global和localStroage
import global from "@/utils/common"
...
handleLogin() {
this.$refs.loginForm.validate(valid => {
if (valid) {
this.loading = true;
if (this.loginForm.rememberMe) {
Cookies.set("username", this.loginForm.username, { expires: 30 });
Cookies.set("password", encrypt(this.loginForm.password), { expires: 30 });
Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 });
} else {
Cookies.remove("username");
Cookies.remove("password");
Cookies.remove('rememberMe');
}
this.$store.dispatch("Login", this.loginForm).then(() => {
// 赋值global和localStorage
global.username = this.loginForm.username
localStorage.setItem('passUserName', this.loginForm.username)
this.$router.push({ path: this.redirect || "/" }).catch(()=>{});
}).catch(() => {
this.loading = false;
if (this.captchaOnOff) {
this.getCode();
}
});
}
});
}
3、main.js中新增窗口监听
window.addEventListener('visibilitychange', function() {
if(document.hidden === false && global.username !== localStorage.getItem('passUserName')) {
window.location.reload()
global.username = localStorage.getItem('passUserName')
} else {
if(global.username === localStorage.getItem('passUserName') && (window.location.pathname === '/index' || window.location.pathname === '/login')) {
window.location.reload()
}
global.username = localStorage.getItem('passUserName')
}
})
4、navbar.vue中退出登录时,localStorage的username赋值为空
async logout() {
this.$confirm('确定注销并退出系统吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$store.dispatch('LogOut').then(() => {
location.href = '/index';
localStorage.setItem('passUserName', '')
})
}).catch(() => {});
}