单点登录bug修复

This commit is contained in:
wuhongjian 2022-07-08 19:02:20 +08:00
parent 678367a6bf
commit a839c90a1e
4 changed files with 273 additions and 290 deletions

View File

@ -28,10 +28,10 @@
<!-- 站点配置 --> <!-- 站点配置 -->
<script> <script>
window.SITE_CONFIG = {}; window.SITE_CONFIG = {};
// window.SITE_CONFIG['backUrl'] = 'http://15.72.183.90:8001'; window.SITE_CONFIG['backUrl'] = 'http://15.72.183.90:8001';
// window.SITE_CONFIG['previewUrl'] = 'http://15.72.183.90:7008/'; window.SITE_CONFIG['previewUrl'] = 'http://15.72.183.90:7008/';
// window.SITE_CONFIG['frontUrl'] = 'http://15.72.183.90:7008/document/#/devModelFile/'; window.SITE_CONFIG['frontUrl'] = 'http://15.72.183.90:7008/document/#/devModelFile/';
// window.SITE_CONFIG['apiURL'] = 'http://15.72.183.90:8000/renren-admin'; window.SITE_CONFIG['apiURL'] = 'http://15.72.183.90:8000/renren-admin';
window.SITE_CONFIG['POI_URL'] = 'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address'; window.SITE_CONFIG['POI_URL'] = 'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address';
// 包头 // 包头
// window.SITE_CONFIG['backUrl'] = 'http://10.110.205.1:8001'; // window.SITE_CONFIG['backUrl'] = 'http://10.110.205.1:8001';
@ -45,10 +45,10 @@
// window.SITE_CONFIG['frontUrl'] = 'http://10.134.135.9:9796/document/#/devModelFile/'; // window.SITE_CONFIG['frontUrl'] = 'http://10.134.135.9:9796/document/#/devModelFile/';
// window.SITE_CONFIG['apiURL'] = 'http://10.134.135.9:8888/renren-admin'; // window.SITE_CONFIG['apiURL'] = 'http://10.134.135.9:8888/renren-admin';
// 开发 // 开发
window.SITE_CONFIG['backUrl'] = 'http://15.2.21.238:9797'; // window.SITE_CONFIG['backUrl'] = 'http://15.2.21.238:9797';
window.SITE_CONFIG['previewUrl'] = 'http://15.2.21.238:9796/'; // window.SITE_CONFIG['previewUrl'] = 'http://15.2.21.238:9796/';
window.SITE_CONFIG['frontUrl'] = 'http://15.2.21.238:9796/document/#/devModelFile/'; // window.SITE_CONFIG['frontUrl'] = 'http://15.2.21.238:9796/document/#/devModelFile/';
window.SITE_CONFIG['apiURL'] = 'http://15.2.21.238:8888/renren-admin'; // window.SITE_CONFIG['apiURL'] = 'http://15.2.21.238:8888/renren-admin';
// window.SITE_CONFIG['POI_URL'] = 'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address'; // window.SITE_CONFIG['POI_URL'] = 'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address';
// 穿透版本 // 穿透版本
// window.SITE_CONFIG['backUrl'] = 'http://124.222.94.39:9797'; // window.SITE_CONFIG['backUrl'] = 'http://124.222.94.39:9797';

View File

@ -2,30 +2,30 @@
* @author chuzhixin 1204505056@qq.com * @author chuzhixin 1204505056@qq.com
* @description 登录获取用户信息退出登录清除accessToken逻辑不建议修改 * @description 登录获取用户信息退出登录清除accessToken逻辑不建议修改
*/ */
import { getUserInfo, login, logout } from '@/api/user' import { getUserInfo, login, logout } from '@/api/user'
import { import {
getAccessToken, getAccessToken,
removeAccessToken, removeAccessToken,
setAccessToken, setAccessToken,
} from '@/utils/accessToken' } from '@/utils/accessToken'
import { title, tokenName } from '@/config' import { title, tokenName } from '@/config'
import { message, notification } from 'ant-design-vue' import { message, notification } from 'ant-design-vue'
const state = () => ({ const state = () => ({
accessToken: getAccessToken(), accessToken: getAccessToken(),
username: '', username: '',
userId: '', userId: '',
avatar: '', avatar: '',
role: 0, // role: 0, //
}) })
const getters = { const getters = {
accessToken: (state) => state.accessToken, accessToken: (state) => state.accessToken,
username: (state) => state.username, username: (state) => state.username,
avatar: (state) => state.avatar, avatar: (state) => state.avatar,
role: (state) => state.role, role: (state) => state.role,
userId: (state) => state.userId, userId: (state) => state.userId,
} }
const mutations = { const mutations = {
/** /**
* @author chuzhixin 1204505056@qq.com * @author chuzhixin 1204505056@qq.com
* @description 设置accessToken * @description 设置accessToken
@ -62,8 +62,8 @@ const mutations = {
setAvatar(state, avatar) { setAvatar(state, avatar) {
state.avatar = avatar state.avatar = avatar
}, },
} }
const actions = { const actions = {
/** /**
* @author chuzhixin 1204505056@qq.com * @author chuzhixin 1204505056@qq.com
* @description 登录拦截放行时设置虚拟角色 * @description 登录拦截放行时设置虚拟角色
@ -113,24 +113,31 @@ const actions = {
* @param {*} { commit, dispatch, state } * @param {*} { commit, dispatch, state }
* @returns * @returns
*/ */
getUserInfo({ commit }) { async getUserInfo({ commit }) {
return new Promise((resolve, reject)=>{ const { data } = await getUserInfo()
getUserInfo().then( (res) =>{
console.log('res', res)
const data = res.data
if (!data) { if (!data) {
message.error(`验证失败,请重新登录...`) message.error(`验证失败,请重新登录...`)
reject() return false
} }
// debugger
commit('setUsername', data.data.username) commit('setUsername', data.data.username)
commit('setRole', data.data.roleIdList.length) commit('setRole', data.data.roleIdList.length)
commit('setUserId', data.data.id) commit('setUserId', data.data.id)
setTimeout(()=>{ // TODO
resolve() // let { username, avatar, roles, ability } = data
},500) // if (username && roles && Array.isArray(roles)) {
// dispatch('acl/setRole', roles, {
}) // root: true,
}) // })
// if (ability && ability.length > 0)
// dispatch('acl/setAbility', ability, {
// root: true,
// })
// commit('setUsername', username)
// commit('setAvatar', avatar)
// } else {
// message.error('')
// }
}, },
/** /**
@ -167,10 +174,10 @@ const actions = {
setAccessToken({ commit }, accessToken) { setAccessToken({ commit }, accessToken) {
commit('setAccessToken', accessToken) commit('setAccessToken', accessToken)
}, },
} }
export default { export default {
state, state,
getters, getters,
mutations, mutations,
actions, actions,
} }

View File

@ -12,7 +12,7 @@ import qs from 'qs'
import router from '@/router' import router from '@/router'
// import { isArray } from '@/utils/validate' // import { isArray } from '@/utils/validate'
import { message } from 'ant-design-vue' import { message } from 'ant-design-vue'
import { setAccessToken } from '@/utils/accessToken' import { getAccessToken, setAccessToken } from '@/utils/accessToken'
let loadingInstance let loadingInstance
@ -22,15 +22,24 @@ let loadingInstance
* @param {*} code * @param {*} code
* @param {*} msg * @param {*} msg
*/ */
const handleCode = (code, msg, redirect) => { const handleCode = (code, msg, res) => {
debugger
switch (code) { switch (code) {
case 401: case 401:
// message.error(msg || '') // message.error(msg || '')
store.dispatch('user/resetAll').catch(() => {}) store.dispatch('user/resetAll').catch(() => {})
// // location.reload() if (res.token) {
if (redirect) { console.log('存在token信息', res.token)
window.location.href = redirect setAccessToken(res.token)
const token = getAccessToken()
console.log('验证token信息', token)
} }
// // location.reload()
// if (redirect) {
// window.location.href = res.redirect
// }
break break
case 403: case 403:
router.push({ path: '/401' }).catch(() => {}) router.push({ path: '/401' }).catch(() => {})
@ -87,10 +96,21 @@ instance.interceptors.request.use(
*/ */
instance.interceptors.response.use( instance.interceptors.response.use(
(response) => { (response) => {
// console.log('', response) console.log('接口返回', response)
// console.log('headers', response.headers) console.log('接口返回headers', response.headers)
// console.log('REDIRECT', response.headers.redirect) console.log('接口返回REDIRECT', response.headers.redirect)
response['Access-Control-Expose-Headers'] = 'redirect'
const { code, message } = response.data
if (response.headers.token) {
setAccessToken(response.headers.token)
} else {
if (response.headers.redirect) {
// window.location.href = response.headers.redirect
window.location.replace(response.headers.redirect)
return
// location.reload()
}
}
if (response.headers.redirect === '/#/login') { if (response.headers.redirect === '/#/login') {
var keys = document.cookie.match(/[^ =;]+(?=\=)/g) var keys = document.cookie.match(/[^ =;]+(?=\=)/g)
if (keys) { if (keys) {
@ -109,29 +129,12 @@ instance.interceptors.response.use(
new Date(0).toUTCString() // .kevis.com new Date(0).toUTCString() // .kevis.com
} }
} }
// console.log('') console.log('已清除')
setTimeout(() => { setTimeout(() => {
location.reload() location.reload()
}, 1000) }, 1000)
} }
debugger; handleCode(code, message, response.headers)
response['Access-Control-Expose-Headers'] = 'redirect'
const { code, message } = response.data
if (response.headers.token) {
setAccessToken(response.headers.token)
debugger
// setAccessToken(response.headers.token)
// store.dispatch('user/getUserInfo')
} else {
if (response.headers.redirect) {
// window.location.href = response.headers.redirect
window.location.replace(response.headers.redirect)
return
// location.reload()
}
}
handleCode(code, message, response.headers.redirect)
if (loadingInstance) loadingInstance.close() if (loadingInstance) loadingInstance.close()
// const { data, config } = response // const { data, config } = response
// const { code, msg } = data // const { code, msg } = data
@ -151,38 +154,15 @@ instance.interceptors.response.use(
// } // }
}, },
(error) => { (error) => {
// console.log('error', error) console.log('接口error', error)
if (loadingInstance) loadingInstance.close() if (loadingInstance) loadingInstance.close()
const { response, message } = error const { response, message } = error
if (error.response && error.response.data) { if (error.response && error.response.data) {
// console.log('', response) console.log('接口返回', response)
// console.log('headers', response.headers) console.log('接口返回headers', response.headers)
// console.log('REDIRECT1111', response.headers.redirect) console.log('接口返回REDIRECT', response.headers.redirect)
if (response.headers.redirect === '/#/login') {
var keys = document.cookie.match(/[^ =;]+(?=\=)/g)
if (keys) {
for (var i = keys.length; i--; ) {
document.cookie =
keys[i] + '=0;path=/;expires=' + new Date(0).toUTCString() //,m.kevis.com
document.cookie =
keys[i] +
'=0;path=/;domain=' +
document.domain +
';expires=' +
new Date(0).toUTCString() // .m.kevis.com
document.cookie =
keys[i] +
'=0;path=/;domain=kevis.com;expires=' +
new Date(0).toUTCString() // .kevis.com
}
}
// console.log('')
setTimeout(() => {
location.reload()
}, 1000)
}
if (response.headers.redirect) { if (response.headers.redirect) {
window.location.href = response.headers.redirect window.location.replace(response.headers.redirect)
return Promise.reject(error) return Promise.reject(error)
} }
const { status, data } = response const { status, data } = response

View File

@ -2,42 +2,39 @@
* @Author: hisense.wuhongjian * @Author: hisense.wuhongjian
* @Date: 2022-04-01 17:23:11 * @Date: 2022-04-01 17:23:11
* @LastEditors: hisense.wuhongjian * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-07-07 19:58:32 * @LastEditTime: 2022-07-08 18:55:28
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
*/ */
/** /**
* @author chuzhixin 1204505056@qq.com * @author chuzhixin 1204505056@qq.com
* @description 路由守卫目前两种模式all模式与intelligence模式 * @description 路由守卫目前两种模式all模式与intelligence模式
*/ */
import router from '@/router' import router from '@/router'
import store from '@/store' import store from '@/store'
import getPageTitle from '@/utils/pageTitle' import getPageTitle from '@/utils/pageTitle'
import { import { getUserInfo } from '@/api/user'
import {
// authentication, // authentication,
loginInterception, loginInterception,
// recordRoute, // recordRoute,
routesWhiteList, routesWhiteList,
} from '@/config' } from '@/config'
import { setAccessToken, getAccessToken } from '@/utils/accessToken' import { setAccessToken, getAccessToken } from '@/utils/accessToken'
router.beforeEach(async (to, from, next) => { router.beforeEach(async (to, from, next) => {
//
// debugger // debugger
// const SSOTOKEN = to.query.SSOToken // const SSOTOKEN = to.query.SSOToken
// if (SSOTOKEN) { // if (SSOTOKEN) {
// setAccessToken(SSOTOKEN) // setAccessToken(SSOTOKEN)
// } // }
const token = getAccessToken() const token = getAccessToken()
// console.log('token', token) console.log('token', token)
let hasToken = token || store.getters['user/accessToken'] let hasToken = token || store.getters['user/accessToken']
// debugger // debugger
//
if (!loginInterception) hasToken = true if (!loginInterception) hasToken = true
// console.log('hasToken', hasToken) console.log('hasToken存在巨大问题', hasToken)
debugger
if (hasToken) { if (hasToken) {
setAccessToken(token) setAccessToken(hasToken)
await store.dispatch('user/getUserInfo') await store.dispatch('user/getUserInfo')
debugger
next() next()
} else { } else {
let accessRoutes = [] let accessRoutes = []
@ -48,21 +45,20 @@ router.beforeEach(async (to, from, next) => {
if (routesWhiteList.indexOf(to.path) !== -1) { if (routesWhiteList.indexOf(to.path) !== -1) {
next() next()
} else { } else {
store.dispatch('user/getUserInfo').then((res)=>{ getUserInfo().then(res=>{
console.log('马到成功!') console.log(res)
next() router.replace('/home')
}) })
// await store.dispatch('user/getUserInfo')
// next()
// if (recordRoute) // if (recordRoute)
// next({ path: '/login', query: { redirect: to.path }, replace: true }) // next({ path: '/login', query: { redirect: to.path }, replace: true })
// else next({ path: '/login', replace: true }) // else next({ path: '/login', replace: true })
// debugger
// setTimeout(()=>{
// next() // next()
// }, 500)
// window.open('http://www.baidu.com', '_self') // window.open('http://www.baidu.com', '_self')
} }
} }
}) })
router.afterEach((to) => { router.afterEach((to) => {
document.title = getPageTitle(to.meta.title) document.title = getPageTitle(to.meta.title)
}) })