From fd2c0805d1cdf2dbbeb8280e330d05bcc96812b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=89=E8=99=B9=E7=9D=BF?= <297504645@qq.com> Date: Tue, 5 Sep 2023 17:26:29 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=8E=A5=E5=8F=A3=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E3=80=91=E8=B7=AF=E7=94=B1=E4=BC=98=E5=8C=96+token=E5=A4=B1?= =?UTF-8?q?=E6=95=88=E5=88=A4=E6=96=AD=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PC/InterFace.Dash/src/api/wms-auth.js | 20 ++++++++- PC/InterFace.Dash/src/permission.js | 26 ++++++++---- PC/InterFace.Dash/src/store/modules/user.js | 45 +++++++++++++-------- 3 files changed, 66 insertions(+), 25 deletions(-) diff --git a/PC/InterFace.Dash/src/api/wms-auth.js b/PC/InterFace.Dash/src/api/wms-auth.js index 8f0bc2f..19e25f1 100644 --- a/PC/InterFace.Dash/src/api/wms-auth.js +++ b/PC/InterFace.Dash/src/api/wms-auth.js @@ -89,10 +89,28 @@ export function getPageListRoles(data) { } //获取权限模板 -export function getpermissionsRoles(data) { +export function getPermissionsRoles(data) { return request({ url: authApi +'/permission-management/permissions', method: 'get', params: data }) } + +// 创建角色 +export function postCreateRoles(data) { + return request({ + url: authApi + '/identity/roles', + method: 'post', + data + }) +} + +//保存权限模板 +export function savePermissionsRoles(URL, data) { + return request({ + url: authApi + URL, + method: 'put', + data + }) +} diff --git a/PC/InterFace.Dash/src/permission.js b/PC/InterFace.Dash/src/permission.js index 51d4de7..a4d5afd 100644 --- a/PC/InterFace.Dash/src/permission.js +++ b/PC/InterFace.Dash/src/permission.js @@ -14,6 +14,7 @@ NProgress.configure({ const whiteList = ['/login','/callback'] // no redirect whitelist const noUserMsg = '获取用户信息失败,请重新登录 !' const getErrMsg = '数据获取失败 !' +const hasToken = getToken() // 跳转登录页 const pageToLogin = (to, from, next) => { @@ -33,9 +34,12 @@ const pageToLogin = (to, from, next) => { const toPageInit = async (to, from, next) => { // 获取用户信息 - let _username = localStorage.getItem("isLoginTokenName")//登录成功且token通过后的登录名 - if(_username && _username != null && (!store.getters.currentUserInfo || store.getters.currentUserInfo.length <= 0)){ - await store.dispatch('user/getUserInfo',_username) + // let _userName = localStorage.getItem("isLoginTokenName")//使用用户名获取 + // if(_userName && _userName != null && (!store.getters.currentUserInfo || store.getters.currentUserInfo.length <= 0)){ + // await store.dispatch('user/getUserInfo',_userName)//使用用户名获取 + let _user_access = hasToken.substring(hasToken.indexOf(" ") + 1,hasToken.length) + if(hasToken && hasToken != null && (!store.getters.currentUserInfo || store.getters.currentUserInfo.length <= 0)){ + await store.dispatch('user/getUserInfoByToken',_user_access) .then(()=>{ toNextHandle(to, from, next) }) @@ -66,10 +70,17 @@ const toNextHandle = async (to, from, next) => { // 获取菜单数据 if(!store.getters.permission_routes || store.getters.permission_routes.length <= 0){ isFresh = true - await store.dispatch('permission/getApiColumnsNames').catch(()=>{ - Message.error(getErrMsg) - NProgress.done() - }) + await store.dispatch('permission/getApiColumnsNames') + .then(res=>{ + // 没有权限(token失效处理) + if(!res || res.length <=0){ + store.dispatch("user/logout") + } + }) + .catch(()=>{ + Message.error(getErrMsg) + NProgress.done() + }) } // 获取枚举数据 @@ -95,7 +106,6 @@ router.beforeEach(async (to, from, next) => { // set page title document.title = getPageTitle() - const hasToken = getToken() // 判断是否自动登录 let isAutoLogin = JSON.parse(localStorage.getItem('isConfigLogin')) || to.query.loginName diff --git a/PC/InterFace.Dash/src/store/modules/user.js b/PC/InterFace.Dash/src/store/modules/user.js index aaa5de7..aa84f37 100644 --- a/PC/InterFace.Dash/src/store/modules/user.js +++ b/PC/InterFace.Dash/src/store/modules/user.js @@ -46,21 +46,11 @@ const loginSuccess = (res,username,resolve,reject) => { const loginSuccessBySignin = (res,resolve, reject,commit) => { let _token = res.token_type + ' ' + res.access_token setToken(_token) - getUsersByToken(res.access_token) - .then(info=>{ - if(info){ - let _info = info - _info.userInfo = info.preferred_username - _info.id = info.sub - commit('SET_USERINFO', _info) - resolve(_info) - }else{ - reject('用户信息获取失败') - } - }) - .catch(err=>{ - reject(err) - }) + store.dispatch('user/getUserInfoByToken',res.access_token).then(()=>{ + resolve() + }).catch(()=>{ + reject() + }) } const actions = { @@ -200,6 +190,29 @@ const actions = { }) }) }, + + // get userInfo + getUserInfoByToken({ + commit + },access_token) { + return new Promise((resolve, reject) => { + getUsersByToken(access_token) + .then(info=>{ + if(info){ + let _info = info + _info.userInfo = info.preferred_username + _info.id = info.sub + commit('SET_USERINFO', _info) + resolve(_info) + }else{ + reject('用户信息获取失败') + } + }) + .catch(err=>{ + reject(err) + }) + }) + }, } export default { @@ -207,4 +220,4 @@ export default { state, mutations, actions -} +} \ No newline at end of file