diff --git a/public/favicon.ico b/public/favicon.ico index d48ccc2..ed859c9 100644 Binary files a/public/favicon.ico and b/public/favicon.ico differ diff --git a/src/assets/js/utils/permission.js b/src/assets/js/utils/permission.js index 208ae10..eb15e08 100644 --- a/src/assets/js/utils/permission.js +++ b/src/assets/js/utils/permission.js @@ -16,20 +16,24 @@ router.beforeEach((to, from, next) => { next({ path: '/login' }) NProgress.done() } else { - // 判断当前用户是否已拉取完user_info信息 - store - .dispatch('user/getInfo') - .then(() => { - store.dispatch('app/GenerateRoutes').then(() => { - next() + if (store.getters.roles.length === 0) { + // 判断当前用户是否已拉取完user_info信息 + store + .dispatch('user/getInfo') + .then(() => { + store.dispatch('app/GenerateRoutes').then(() => { + next() + }) }) - }) - .catch(err => { - store.dispatch('user/logout').then(() => { - Message.error(err) - next({ path: '/ogin' }) + .catch(err => { + store.dispatch('user/logout').then(() => { + Message.error(err) + next({ path: '/ogin' }) + }) }) - }) + } else { + next() + } } } else { // 没有token diff --git a/src/assets/js/utils/request.js b/src/assets/js/utils/request.js index 5c77599..8c80322 100644 --- a/src/assets/js/utils/request.js +++ b/src/assets/js/utils/request.js @@ -1,7 +1,8 @@ import axios from 'axios' import { MessageBox, Message, Loading } from 'element-ui' import store from '@/store' -import { getToken } from '@/assets/js/utils/auth' +import { getToken, removeToken } from '@/assets/js/utils/auth' +import router from '@/router' // create an axios instance const service = axios.create({ @@ -49,6 +50,9 @@ service.interceptors.request.use( service.interceptors.response.use( response => { endLoading() + if (response.config.back) { + return response.data + } // 二进制数据则直接返回 if ( response.request.responseType === 'blob' || @@ -61,15 +65,12 @@ service.interceptors.response.use( if (res.code === 401) { MessageBox.confirm('登录状态已过期,请重新登录', '系统提示', { confirmButtonText: '重新登录', - cancelButtonText: '取消', + showCancelButton: false, type: 'warning' + }).then(() => { + removeToken() + router.push({ path: '/login' }) }) - .then(() => { - store.dispatch('user/resetToken').then(() => { - location.reload() - }) - }) - .catch(() => {}) } else if (res.code === 500) { Message({ message: res.message, @@ -83,6 +84,7 @@ service.interceptors.response.use( type: 'error', duration: 5 * 1000 }) + return Promise.reject(res) } else { if (!res.content.result || res.content.result !== '0') { Message({ @@ -96,12 +98,13 @@ service.interceptors.response.use( } }, error => { + endLoading() Message({ message: error.message, type: 'error', duration: 5 * 500 }) - return Promise.reject(error) + return } ) diff --git a/src/store/getters.js b/src/store/getters.js index 08fc58d..1ca0970 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -2,8 +2,9 @@ const getters = { sidebar: state => state.app.sidebar, device: state => state.app.device, token: state => state.user.token, + roles: state => state.user.roles, avatar: state => state.user.avatar, name: state => state.user.name, - sidebarList: state => state.user.sidebarList, + sidebarList: state => state.user.sidebarList } export default getters diff --git a/src/store/modules/user.js b/src/store/modules/user.js index 6f46619..a1c60b1 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -4,7 +4,8 @@ import { getToken, setToken, removeToken } from '@/assets/js/utils/auth' const state = { token: getToken(), name: '', - avatar: '' + avatar: '', + roles: [] } const mutations = { @@ -16,6 +17,9 @@ const mutations = { }, SET_AVATAR: (state, avatar) => { state.avatar = avatar + }, + SET_ROLES: (state, roles) => { + state.roles = roles } } @@ -51,12 +55,12 @@ const actions = { return new Promise((resolve, reject) => { getInfo(state.token) .then(res => { - if (!res) { - reject('Verification failed, please Login again.') + let roles = res.content.content.roleCodes || [] + if (roles && roles.length > 0) { + // 验证返回的roles是否是一个非空数组 + commit('SET_ROLES', roles) } - commit('SET_NAME', res.content.content.userName) - // commit('SET_AVATAR', res.avatar) resolve(res) }) .catch(error => { diff --git a/src/views/app/404.vue b/src/views/app/404.vue index cd28027..b7ba9e8 100644 --- a/src/views/app/404.vue +++ b/src/views/app/404.vue @@ -11,7 +11,12 @@