diff --git a/src/components/Editor/src/Editor.vue b/src/components/Editor/src/Editor.vue index c2905ff8baf6a93e78adaae77ef86871c1408f05..260781ad0283f44534f96f577abbe2d44caab192 100644 --- a/src/components/Editor/src/Editor.vue +++ b/src/components/Editor/src/Editor.vue @@ -8,6 +8,7 @@ import { ElMessage } from 'element-plus' import { useLocaleStore } from '@/store/modules/locale' import { getRefreshToken, getTenantId } from '@/utils/auth' import { getUploadUrl } from '@/components/UploadFile/src/useUpload' +import merge from 'lodash-es/merge' defineOptions({ name: 'Editor' }) @@ -75,7 +76,7 @@ const handleCreated = (editor: IDomEditor) => { // 编辑器配置 const editorConfig = computed((): IEditorConfig => { - return Object.assign( + return merge( { placeholder: '请输入内容...', readOnly: props.readonly, diff --git a/src/config/axios/service.ts b/src/config/axios/service.ts index 9214bf8ead65e7aa43e69a33ee34bcfd45480cc2..c4dae4d9c87f9aeb61fa14b6b5b6c02daaf9bca0 100644 --- a/src/config/axios/service.ts +++ b/src/config/axios/service.ts @@ -161,6 +161,8 @@ service.interceptors.response.use( } // 2. 进行刷新访问令牌 try { + // 刷新令牌时,需要将 isRelogin.show 设置为 false,解决在后台失效token,前端缓存token,登录页卡死的问题 + isRelogin.show = false const refreshTokenRes = await refreshToken() // 2.1 刷新成功,则回放队列的请求 + 当前请求 setToken((await refreshTokenRes).data.data) @@ -246,7 +248,12 @@ const handleAuthorized = () => { if (!isRelogin.show) { // 如果已经到登录页面则不进行弹窗提示 if (window.location.href.includes('login')) { - return + // 后台refreshtoken失效,前台缓存token存在,直接访问Login页面会卡死。 + // 清除掉token,重新走路由守卫,确保本地即使缓存了token也是能正常加载登录页,前提是要确保isRelogin.show为false + // https://wx.zsxq.com/group/88858522214142/topic/45811881251414188 + removeToken() + window.location.href = window.location.href + // return } isRelogin.show = true ElMessageBox.confirm(t('sys.api.timeoutMessage'), t('common.confirmTitle'), {