diff --git a/.gitignore b/.gitignore index eb78f8f..be46788 100644 --- a/.gitignore +++ b/.gitignore @@ -259,8 +259,6 @@ paket-files/ # Python Tools for Visual Studio (PTVS) __pycache__/ *.pyc -/ZRAdmin/Properties/launchSettings.json -/ZRAdmin/Properties/PublishProfiles /ZR.Admin.WebApi/appsettings.Stage.json /CodeGenerate /ZR.Admin.WebApi/appsettings.Production.json @@ -268,3 +266,4 @@ __pycache__/ /ZR.Admin.WebApi/wwwroot/Generatecode /ZR.Admin.WebApi/wwwroot/export /ZR.Vue/src/views/business/Gendemo.vue +/ZR.Admin.WebApi/Properties/launchSettings.json diff --git a/ZR.Vue/src/api/system/login.js b/ZR.Vue/src/api/system/login.js index 593f801..9adfb26 100644 --- a/ZR.Vue/src/api/system/login.js +++ b/ZR.Vue/src/api/system/login.js @@ -24,7 +24,7 @@ export function getInfo() { } // 退出方法 -export function logOut() { +export function logout() { return request({ url: '/LogOut', method: 'POST' diff --git a/ZR.Vue/src/components/TopNav/index.vue b/ZR.Vue/src/components/TopNav/index.vue index b34175e..e92d381 100644 --- a/ZR.Vue/src/components/TopNav/index.vue +++ b/ZR.Vue/src/components/TopNav/index.vue @@ -137,7 +137,7 @@ export default { window.open(key, "_blank"); } else if (key.indexOf("/redirect") !== -1) { // /redirect 路径内部打开 - this.$router.push({ path: key.replace("/redirect", "") }); + this.$router.push({ path: key.replace("/redirect", "") }).catch(err => {}); } else { // 显示左侧联动菜单 this.activeRoutes(key); diff --git a/ZR.Vue/src/permission.js b/ZR.Vue/src/permission.js index b8f84ae..25a17f0 100644 --- a/ZR.Vue/src/permission.js +++ b/ZR.Vue/src/permission.js @@ -18,9 +18,8 @@ const whiteList = ['/login', '/auth-redirect', '/bind', '/register', '/demo'] router.beforeEach((to, from, next) => { NProgress.start() console.log('router to ' + to.path); - const hasToken = getToken() - if (hasToken) { + if (getToken()) { /* has token*/ if (to.path === '/login') { next({ @@ -29,46 +28,24 @@ router.beforeEach((to, from, next) => { NProgress.done() } else { if (store.getters.roles.length === 0) { - // 判断当前用户是否已拉取完user_info信息 - store.dispatch('GetInfo').then(res => { - //console.log('拉取userInfo', JSON.stringify(res)) - // 拉取user_info - const roles = res.data.roles - store.dispatch('GenerateRoutes', { - roles - }).then(accessRoutes => { - - // 测试 默认静态页面 - // store.dispatch('permission/generateRoutes', { roles }).then(accessRoutes => { - // 根据roles权限生成可访问的路由表 + store.dispatch('GetInfo').then(() => { + store.dispatch('GenerateRoutes').then(accessRoutes => { router.addRoutes(accessRoutes) // 动态添加可访问路由表 - next({ - ...to, - replace: true - }) // hack方法 确保addRoutes已完成 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 }) - next() + //next() }).catch(err => { console.error(err) - //这部不能少,否则会出现死循环 - store.dispatch('FedLogOut').then(() => { + store.dispatch('LogOut').then(() => { + console.log('弹框登录失败') Message.error(err != undefined ? err : '登录失败') - next({ - path: '/' - }) + next({ path: '/' }) }) - next(`/login?redirect=${to.path}`) + //next(`/login`) }) } else { next() - // 没有动态改变权限的需求可直接next() 删除下方权限判断 ↓ - // if (hasPermission(store.getters.roles, to.meta.roles)) { - // next() - // } else { - // next({ path: '/401', replace: true, query: { noGoBack: true }}) - // } - // 可删 ↑ } } } else { diff --git a/ZR.Vue/src/store/modules/user.js b/ZR.Vue/src/store/modules/user.js index 7a95dbd..32ed9ef 100644 --- a/ZR.Vue/src/store/modules/user.js +++ b/ZR.Vue/src/store/modules/user.js @@ -1,4 +1,4 @@ -import { login, logOut, getInfo } from '@/api/system/login' +import { login, logout, getInfo } from '@/api/system/login' import { getToken, setToken, removeToken } from '@/utils/auth' const user = { @@ -42,8 +42,8 @@ const user = { return new Promise((resolve, reject) => { login(username, password, code, uuid).then(res => { if (res.code == 200) { - //提交上面的mutaions方法 setToken(res.data) + //提交上面的mutaions方法 commit('SET_TOKEN', res.data) resolve()//then处理 } else { @@ -56,11 +56,7 @@ const user = { // 获取用户信息 GetInfo({ commit, state }) { return new Promise((resolve, reject) => { - getInfo(state.token).then(res => { - if (!res || res.code != 200) { - return reject(res.msg) - } - + getInfo().then(res => { const data = res.data const avatar = data.user.avatar == "" ? require("@/assets/image/profile.jpg") : data.user.avatar; @@ -83,13 +79,14 @@ const user = { // 退出系统 LogOut({ commit, state }) { + console.log('退出登录') return new Promise((resolve, reject) => { - logOut(state.token).then(() => { + logout().then((res) => { removeToken()// 必须先移除token commit('SET_TOKEN', '') commit('SET_ROLES', []) commit('SET_PERMISSIONS', []) - resolve() + resolve(res) }).catch(error => { reject(error) }) diff --git a/ZR.Vue/src/utils/request.js b/ZR.Vue/src/utils/request.js index cf02372..9cf7d49 100644 --- a/ZR.Vue/src/utils/request.js +++ b/ZR.Vue/src/utils/request.js @@ -42,8 +42,7 @@ service.interceptors.response.use(res => { return; } // 未设置状态码则默认成功状态 - const code = res.data.code; - const msg = res.data.msg; + const { code , msg } = res.data; if (code == 401) { MessageBox.confirm('登录状态已过期,请重新登录', '系统提示', { @@ -52,17 +51,17 @@ service.interceptors.response.use(res => { type: 'warning' }).then(() => { store.dispatch('LogOut').then(() => { - location.href = '/index'; + location.href = process.env.VUE_APP_ROUTER_PREFIX + 'index'; }) }) - return Promise.reject() + return Promise.reject('无效的会话,或者会话已过期,请重新登录。') } else if (code == 0 || code == 110 || code == 101 || code == 403 || code == 500) { Message({ message: msg, type: 'error' }) - return Promise.reject() + return Promise.reject(msg) } else { //返回标准 code/msg/data字段 return res.data;