diff --git a/src/App.vue b/src/App.vue index 3dab0a3..b90d312 100644 --- a/src/App.vue +++ b/src/App.vue @@ -12,9 +12,20 @@ name: 'app', components: { }, - created: function () { - this.$router.replace('/login') - } + // beforeCreate: function () { + // let user = JSON.parse(localStorage.getItem('user')); + // if (!user) { + // this.$router.replace('/login') + // } + // } + watch: { + '$route'(to, from) {//监听路由改变 + let user = JSON.parse(sessionStorage.getItem('user')); + if (!user) { + this.$router.replace('/login') + } + } + }, } diff --git a/src/main.js b/src/main.js index c537e06..ba5fbd7 100644 --- a/src/main.js +++ b/src/main.js @@ -86,6 +86,10 @@ const router = new VueRouter({ router.beforeEach((to, from, next) => { NProgress.start(); + let user = JSON.parse(sessionStorage.getItem('user')); + if (!user && to.path != '/login') { + next({ path: '/login' }) + } next() }) diff --git a/src/mockdata/user.js b/src/mockdata/user.js index 6ef85fb..f9c511d 100644 --- a/src/mockdata/user.js +++ b/src/mockdata/user.js @@ -4,7 +4,7 @@ const LoginUsers = [ id: 1, username: 'admin', password: '123456', - avatar: '', + avatar: 'https://raw.githubusercontent.com/taylorchen709/markdown-images/master/vueadmin/user.png', name: '张某某' } ]; diff --git a/src/pages/Home.vue b/src/pages/Home.vue index 54f2bce..d161826 100644 --- a/src/pages/Home.vue +++ b/src/pages/Home.vue @@ -7,7 +7,7 @@ - 张某某 + {{sysUserName}} 我的消息 @@ -82,6 +82,8 @@ currentPath: '/table', currentPathName: 'Table', currentPathNameParent: '导航一', + sysUserName: '', + sysUserAvatar: '', form: { name: '', region: '', @@ -119,12 +121,25 @@ this.$confirm('确认退出吗?', '提示', { //type: 'warning' }).then(() => { + sessionStorage.removeItem('user'); _this.$router.replace('/login'); }).catch(() => { }); + } + }, + mounted() { + this.currentPath = this.$route.path; + this.currentPathName = this.$route.name; + this.currentPathNameParent = this.$route.matched[0].name; + + var user = sessionStorage.getItem('user'); + if (user) { + user = JSON.parse(user); + this.sysUserName = user.name || ''; + this.sysUserAvatar = user.avatar || ''; } } } diff --git a/src/pages/Login.vue b/src/pages/Login.vue index 8ade801..2e288ed 100644 --- a/src/pages/Login.vue +++ b/src/pages/Login.vue @@ -62,12 +62,8 @@ type: 'error' }); } else { - localStorage.setItem('user', JSON.stringify(user)); - if (this.$route.query.redirect) { - this.$router.push({ path: this.$route.query.redirect }); - } else { - this.$router.push({ path: '/table' }); - } + sessionStorage.setItem('user', JSON.stringify(user)); + this.$router.push({ path: '/table' }); } }); } else {