diff --git a/PC/InterFace.Dash/src/permission.js b/PC/InterFace.Dash/src/permission.js index cd0d850..188ca74 100644 --- a/PC/InterFace.Dash/src/permission.js +++ b/PC/InterFace.Dash/src/permission.js @@ -16,6 +16,16 @@ const loginErr = '登录失败,请重新登录 !' const getErrMsg = '数据获取失败 !' +// 退出登录处理 +const logoutHandle = (msg) => { + if(msg){ + Message.error(msg) + } + setTimeout(()=>{ + store.dispatch("user/logout") + },0) +} + // 跳转登录页 const pageToLogin = (to, from, next) => { if (whiteList.indexOf(to.path) >= 0 ) { @@ -54,8 +64,7 @@ const toPageInit = async (to, from, next) => { if(getToken()){ toNextHandle(to, from, next) }else{ - Message.error('暂无token,请重新登录') - store.dispatch("user/logout") + logoutHandle('暂无token,请重新登录') } } @@ -65,11 +74,12 @@ const getErrHandle = (to, from, next) => { let isAutoLogin = JSON.parse(localStorage.getItem('isConfigLogin')) || to.query.loginName Message.error(getErrMsg) if(!isAutoLogin){ - store.dispatch("user/logout") + logoutHandle() } NProgress.done() } + // 跳转处理 const toNextHandle = async (to, from, next) => { let isFresh = false @@ -82,14 +92,13 @@ const toNextHandle = async (to, from, next) => { } // 获取菜单数据 permission_routes - if(!store.getters.addRoutes || store.getters.addRoutes.length <= 0){ + if(!store.getters.hasApiToken){ isFresh = true await store.dispatch('permission/getAppConfig') - .then(res=>{ + .then((res)=>{ // 没有权限(token失效处理) - if(!res || res.length <=0){ - Message.error('用户无权限或者token失效,请配置权限或重新登录') - store.dispatch("user/logout") + if(!res || !res.auth || !res.auth.grantedPolicies || JSON.stringify(res.auth.grantedPolicies) == '{}'){ + logoutHandle('用户无权限或者token失效,请配置权限或重新登录') } }) .catch(()=>{ diff --git a/PC/InterFace.Dash/src/router/index.js b/PC/InterFace.Dash/src/router/index.js index 41aee17..d566d78 100644 --- a/PC/InterFace.Dash/src/router/index.js +++ b/PC/InterFace.Dash/src/router/index.js @@ -45,11 +45,6 @@ export let constantRoutes = [ component: () => import('@/views/redirect/index') }] }, - { - path: '*', - redirect: '/404', - hidden: true - }, { path: '/login', component: () => import('@/views/login/index'), @@ -150,11 +145,11 @@ export let constantRoutes = [ export let asyncRoutes = [ /** when your routing map is too long, you can split it into small modules **/ // 404 page must be placed at the end !!! - // { - // path: '*', - // redirect: '/404', - // hidden: true - // } + { + path: '*', + redirect: '/404', + hidden: true + } ] const createRouter = () => new Router({ diff --git a/PC/InterFace.Dash/src/store/getters.js b/PC/InterFace.Dash/src/store/getters.js index b970d97..7014692 100644 --- a/PC/InterFace.Dash/src/store/getters.js +++ b/PC/InterFace.Dash/src/store/getters.js @@ -9,7 +9,7 @@ const getters = { roles: state => state.permission.roles,//当前用户权限 currentUserInfo: state => state.user.userInfo,//当前用户信息 permission_routes: state => state.permission.routes,//全部菜单 - addRoutes:state => state.permission.addRoutes,//非项目内固定的路由(接口获取的) + hasApiToken:state => state.permission.configApiToken,//配置config接口是否有权限 tablesName:state => state.permission.tablesName,//接口获取所有的表名 errorLogs: state => state.errorLog.logs, enumList: state => state.definition.enumList,//接口获取的枚举 diff --git a/PC/InterFace.Dash/src/store/modules/permission.js b/PC/InterFace.Dash/src/store/modules/permission.js index 33c94e0..a64a675 100644 --- a/PC/InterFace.Dash/src/store/modules/permission.js +++ b/PC/InterFace.Dash/src/store/modules/permission.js @@ -13,16 +13,19 @@ const AbpIdentity_mark = 'AbpIdentityMark' const state = { routes: [],//菜单 roles: [],//当前用户权限 - addRoutes: [], + configApiToken:false,//配置config接口是否有权限 tablesName:null,//所有的表名 } const mutations = { SET_ROUTES: (state, routes) => { - state.addRoutes = routes state.routes = constantRoutes.concat(routes) router.addRoutes(routes) }, + // 配置config接口是否为空(即没有权限) + SET_CONFIG_TOKEN: (state, data) => { + state.configApiToken = data + }, // 设置权限(v-permission) SET_ROLES: (state, roles) => { state.roles = roles @@ -148,6 +151,11 @@ const actions = { // 存储当前用户信息 store.dispatch('user/setUserInfo',res.currentUser) let roles_arr = [] + if(!res.auth.grantedPolicies || JSON.stringify(res.auth.grantedPolicies) == '{}'){ + commit('SET_CONFIG_TOKEN',false) + }else{ + commit('SET_CONFIG_TOKEN',true) + } for(let r in res.auth.grantedPolicies){ if(res.auth.grantedPolicies[r])roles_arr.push(r) } @@ -244,7 +252,7 @@ const actions = { let _initEndMenus = generaMenu(asyncRoutes, _initTreeMenus,true) let accessedRoutes = _initEndMenus commit('SET_ROUTES', accessedRoutes) - resolve(accessedRoutes) + resolve(res) }).catch(err => { console.log(err) }) diff --git a/PC/InterFace.Dash/src/views/menuList/AbpIdentityMarkUsers.vue b/PC/InterFace.Dash/src/views/menuList/AbpIdentityMarkUsers.vue index 13869c6..72bd049 100644 --- a/PC/InterFace.Dash/src/views/menuList/AbpIdentityMarkUsers.vue +++ b/PC/InterFace.Dash/src/views/menuList/AbpIdentityMarkUsers.vue @@ -141,9 +141,9 @@ > - + @@ -309,7 +309,7 @@ export default { password: "", surname: "", lockoutEnabled: true, - IsActive: true, + isActive: true, }, //密码明文 passwordType: "password", @@ -442,7 +442,7 @@ export default { this.form.roleNames = []; this.form.password = ""; this.form.surname = ""; - this.form.IsActive = ""; + this.form.isActive = ""; this.$refs.multipleTable.clearSelection(); }, handleCreate() { @@ -488,7 +488,7 @@ export default { this.form.surname = row.name; this.form.lockoutEnabled = row.lockoutEnabled this.concurrencyStamp = row.concurrencyStamp; - this.form.IsActive = row.isActive; + this.form.isActive = row.isActive; usersroles().then((res) => { this.options = res.items; });