From 1069569f69bc712193ac43978becb683885dbe57 Mon Sep 17 00:00:00 2001 From: xuechunyuan <17853500702@163.com> Date: Fri, 19 May 2023 22:03:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=95=E7=82=B9=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/user.js | 24 +++- src/components/third-register/main.vue | 2 +- src/page/index/top/index.vue | 2 +- src/page/lock/index.vue | 2 +- src/page/login/index.vue | 146 +++++++------------------ src/page/login/newlogin.vue | 141 ++++++++++++++++++++++++ src/permission.js | 8 +- src/router/axios.js | 7 +- src/router/page/index.js | 12 +- src/store/modules/user.js | 41 ++++--- vue.config.js | 1 + 11 files changed, 251 insertions(+), 135 deletions(-) create mode 100644 src/page/login/newlogin.vue diff --git a/src/api/user.js b/src/api/user.js index 66a5ec6..254979a 100644 --- a/src/api/user.js +++ b/src/api/user.js @@ -37,16 +37,30 @@ export const loginBySocial = (tenantId, source, code, state) => request({ } }) -export const loginBySso = (state, code) => request({ +// export const loginBySso = (state, code) => request({ +// url: '/api/blade-auth/oauth/token', +// method: 'post', +// headers: { +// 'Tenant-Id': state +// }, +// params: { +// tenantId: state, +// code, +// grant_type: "authorization_code", +// scope: "all", +// redirect_uri: website.redirectUri, +// } +// }) +export const loginBySso = (SSOToken, grantType) => request({ url: '/api/blade-auth/oauth/token', method: 'post', headers: { - 'Tenant-Id': state + 'Tenant-Id': '000000' }, params: { - tenantId: state, - code, - grant_type: "authorization_code", + tenantId: '000000', + SSOToken, + grant_type: grantType, scope: "all", redirect_uri: website.redirectUri, } diff --git a/src/components/third-register/main.vue b/src/components/third-register/main.vue index 080d54e..f453a79 100644 --- a/src/components/third-register/main.vue +++ b/src/components/third-register/main.vue @@ -94,7 +94,7 @@ this.$alert("注册申请已提交,请耐心等待管理员通过!", '注册提示').then(() => { this.$store.dispatch("LogOut").then(() => { resetRouter(); - this.$router.push({path: "/login"}); + this.$router.push({path: "/newlogin"}); }); }) } else { diff --git a/src/page/index/top/index.vue b/src/page/index/top/index.vue index 3541468..50cafe2 100644 --- a/src/page/index/top/index.vue +++ b/src/page/index/top/index.vue @@ -68,7 +68,7 @@ export default { }).then(() => { this.$store.dispatch("LogOut").then(() => { resetRouter(); - this.$router.push({ path: "/login" }); + this.$router.push({ path: "/newlogin" }); }); }); }, diff --git a/src/page/lock/index.vue b/src/page/lock/index.vue index 26cb451..fe3149f 100644 --- a/src/page/lock/index.vue +++ b/src/page/lock/index.vue @@ -49,7 +49,7 @@ export default { type: "warning" }).then(() => { this.$store.dispatch("LogOut").then(() => { - this.$router.push({ path: "/login" }); + this.$router.push({ path: "/newlogin" }); }); }); }, diff --git a/src/page/login/index.vue b/src/page/login/index.vue index 0f443dc..7af36c2 100644 --- a/src/page/login/index.vue +++ b/src/page/login/index.vue @@ -1,57 +1,17 @@ + + diff --git a/src/permission.js b/src/permission.js index 2f88c34..ad79c37 100644 --- a/src/permission.js +++ b/src/permission.js @@ -17,13 +17,13 @@ router.beforeEach((to, from, next) => { if (getToken()) { if (store.getters.isLock && to.path !== lockPage) { //如果系统激活锁屏,全部跳转到锁屏页 next({path: lockPage}) - } else if (to.path === '/login') { //如果登录成功访问登录页跳转到主页 + } else if (to.path === '/newlogin') { //如果登录成功访问登录页跳转到主页 next({path: '/'}) } else { //如果用户信息为空则获取用户信息,获取用户信息失败,跳转到登录页 if (store.getters.token.length === 0) { store.dispatch('FedLogOut').then(() => { - next({path: '/login'}) + next({path: '/newlogin'}) }) } else { const value = to.query.src || to.fullPath; @@ -57,7 +57,7 @@ router.beforeEach((to, from, next) => { if (meta.isAuth === false) { next() } else { - next('/login') + next('/newlogin') } } }) @@ -68,7 +68,7 @@ router.afterEach(() => { let i18n = store.getters.tag.meta.i18n; title = router.$avueRouter.generateTitle(title, i18n); //判断登录页的情况 - if (router.history.current.fullPath === "/login") { + if (router.history.current.fullPath === "/newlogin") { title = "登录"; } //根据当前的标签也获取label的值动态设置浏览器标题 diff --git a/src/router/axios.js b/src/router/axios.js index 625c850..50e2439 100644 --- a/src/router/axios.js +++ b/src/router/axios.js @@ -59,21 +59,22 @@ axios.interceptors.request.use(config => { axios.interceptors.response.use(res => { //关闭 progress bar // NProgress.done(); - //获取状态码 const status = res.data.code || res.status; const statusWhiteList = website.statusWhiteList || []; const message = res.data.msg || res.data.error_description || '未知错误'; //如果在白名单里则自行catch逻辑处理 if (statusWhiteList.includes(status)) return Promise.reject(res); //如果是401则跳转到登录页面 - if (status === 401) store.dispatch('FedLogOut').then(() => router.push({path: '/login'})); + if (status === 401) store.dispatch('FedLogOut').then(() => router.push({path: '/newlogin'})); // 如果请求为非200否者默认统一处理 - if (status !== 200) { + if (status !== 200 && res.data.error == undefined) { Message({ message: message, type: 'error' }); return Promise.reject(new Error(message)) + } else if(res.data.error != undefined) { + return Promise.reject(res.data) } return res; }, error => { diff --git a/src/router/page/index.js b/src/router/page/index.js index 1136402..c59cde3 100644 --- a/src/router/page/index.js +++ b/src/router/page/index.js @@ -1,7 +1,7 @@ import Layout from '@/page/index/' export default [{ - path: '/login', + path: '/login',//金宏网过渡页 name: '登录页', component: () => import( /* webpackChunkName: "page" */ '@/page/login/index'), @@ -10,6 +10,16 @@ export default [{ isTab: false, isAuth: false } +},{ + path: '/newlogin', + name: '登录页', + component: () => + import( /* webpackChunkName: "page" */ '@/page/login/newlogin'), + meta: { + keepAlive: true, + isTab: false, + isAuth: false + } }, { path: '/lock', diff --git a/src/store/modules/user.js b/src/store/modules/user.js index f92f525..39e580e 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -1,5 +1,5 @@ import {setToken, setRefreshToken, removeToken, removeRefreshToken} from '@/util/auth' -import {Message} from 'element-ui' +import {Message, MessageBox} from 'element-ui' import {setStore, getStore} from '@/util/store' import {isURL, validatenull} from '@/util/validate' import {deepClone} from '@/util/util' @@ -105,23 +105,34 @@ const user = { }, //根据单点信息登录 LoginBySso({commit}, userInfo) { - return new Promise((resolve) => { - loginBySso(userInfo.state, userInfo.code).then(res => { - const data = res.data; - if (data.error_description) { - Message({ - message: data.error_description, - type: 'error' - }) - } else { - commit('SET_TOKEN', data.access_token); - commit('SET_REFRESH_TOKEN', data.refresh_token); - commit('SET_USER_INFO', data); - commit('SET_TENANT_ID', data.tenant_id); + return new Promise((resolve, reject) => { + loginBySso(userInfo.SSOToken, userInfo.grantType).then(res => { + console.log('loginBySso=======res',res) + // const data = res.data; + if(res.error != 'invalid_request' && res.error != 'invalid_grant'){ + commit('SET_TOKEN', res.data.access_token); + commit('SET_REFRESH_TOKEN', res.data.refresh_token); + commit('SET_USER_INFO', res.data); + commit('SET_TENANT_ID', res.data.tenant_id); commit('DEL_ALL_TAG'); commit('CLEAR_LOCK'); } - resolve(); + // if (data.error_description) { + // Message({ + // message: data.error_description, + // type: 'error' + // }) + // } else { + // commit('SET_TOKEN', data.access_token); + // commit('SET_REFRESH_TOKEN', data.refresh_token); + // commit('SET_USER_INFO', data); + // commit('SET_TENANT_ID', data.tenant_id); + // commit('DEL_ALL_TAG'); + // commit('CLEAR_LOCK'); + // } + resolve(res); + }).catch(err => { + reject(err); }) }) }, diff --git a/vue.config.js b/vue.config.js index 0b9ff84..15993c4 100644 --- a/vue.config.js +++ b/vue.config.js @@ -27,6 +27,7 @@ module.exports = { '/api': { //本地服务接口地址 target: 'http://192.168.3.36:81', + // target: 'http://192.168.1.12:81', // target: 'http://192.168.1.102:81', //远程演示服务地址,可用于直接启动项目 // target: 'http://10.133.191.105:81',