From ef769da27d630c9afad443f71596bab869cba6ac Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Fri, 4 Jun 2021 12:20:03 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=20=E4=BC=98=E5=8C=96token=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E6=8F=90=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/dataease/auth/filter/JWTFilter.java | 36 ++++------- frontend/src/lang/en.js | 6 +- frontend/src/lang/tw.js | 6 +- frontend/src/lang/zh.js | 6 +- frontend/src/utils/request.js | 61 ++----------------- 5 files changed, 32 insertions(+), 83 deletions(-) diff --git a/backend/src/main/java/io/dataease/auth/filter/JWTFilter.java b/backend/src/main/java/io/dataease/auth/filter/JWTFilter.java index 462e2f27f0..5f31bf8eea 100644 --- a/backend/src/main/java/io/dataease/auth/filter/JWTFilter.java +++ b/backend/src/main/java/io/dataease/auth/filter/JWTFilter.java @@ -6,6 +6,7 @@ import io.dataease.auth.entity.TokenInfo; import io.dataease.auth.service.AuthUserService; import io.dataease.auth.util.JWTUtils; import io.dataease.commons.utils.CommonBeanFactory; +import io.dataease.commons.utils.LogUtil; import io.dataease.i18n.Translator; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authc.AuthenticationException; @@ -72,10 +73,11 @@ public class JWTFilter extends BasicHttpAuthenticationFilter { boolean loginSuccess = executeLogin(request, response); return loginSuccess; } catch (Exception e) { + LogUtil.error(e); if (e instanceof AuthenticationException && StringUtils.equals(e.getMessage(), expireMessage)){ - responseExpire(request, response); + responseExpire(request, response, e); }else { - response401(request, response); + tokenError(request, response, e); } } } @@ -125,29 +127,17 @@ public class JWTFilter extends BasicHttpAuthenticationFilter { return super.preHandle(request, response); } - /** - * 将非法请求跳转到 /401 - */ - private void response401(ServletRequest req, ServletResponse resp) { - try { - HttpServletResponse httpServletResponse = (HttpServletResponse) resp; - httpServletResponse.addHeader("Access-Control-Expose-Headers", "authentication-status"); - httpServletResponse.setHeader("authentication-status", "invalid"); - httpServletResponse.setStatus(401); - } catch (Exception e) { - LOGGER.error(e.getMessage()); - } + + private void tokenError(ServletRequest req, ServletResponse resp, Exception e1) { + HttpServletResponse httpServletResponse = (HttpServletResponse) resp; + httpServletResponse.addHeader("Access-Control-Expose-Headers", "authentication-status"); + httpServletResponse.setHeader("authentication-status", "invalid"); } - private void responseExpire(ServletRequest req, ServletResponse resp) { - try { - HttpServletResponse httpServletResponse = (HttpServletResponse) resp; - httpServletResponse.addHeader("Access-Control-Expose-Headers", "authentication-status"); - httpServletResponse.setHeader("authentication-status", "login_expire"); - httpServletResponse.setStatus(401); - } catch (Exception e) { - LOGGER.error(e.getMessage()); - } + private void responseExpire(ServletRequest req, ServletResponse resp, Exception e1) { + HttpServletResponse httpServletResponse = (HttpServletResponse) resp; + httpServletResponse.addHeader("Access-Control-Expose-Headers", "authentication-status"); + httpServletResponse.setHeader("authentication-status", "login_expire"); } } diff --git a/frontend/src/lang/en.js b/frontend/src/lang/en.js index fb8cd8c6dd..593265b28b 100644 --- a/frontend/src/lang/en.js +++ b/frontend/src/lang/en.js @@ -285,7 +285,11 @@ export default { char_can_not_more_50: 'Can not more 50 char', share_success: 'Share Success', input_id: 'Please input ID', - input_pwd: 'Please input password' + input_pwd: 'Please input password', + message_box: { + alert: 'Alert', + confirm: 'Confirm' + } }, documentation: { documentation: 'Documentation', diff --git a/frontend/src/lang/tw.js b/frontend/src/lang/tw.js index 5b6f5197cf..39c0895cf3 100644 --- a/frontend/src/lang/tw.js +++ b/frontend/src/lang/tw.js @@ -285,7 +285,11 @@ export default { char_can_not_more_50: '不能超過50字符', share_success: '分享成功', input_id: '請輸入ID', - input_pwd: '請輸入密碼' + input_pwd: '請輸入密碼', + message_box: { + alert: '警告', + confirm: '確認' + } }, documentation: { documentation: '文檔', diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index 0d67fa2a07..3f1a919644 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -285,7 +285,11 @@ export default { char_can_not_more_50: '不能超过50字符', share_success: '分享成功', input_id: '请输入ID', - input_pwd: '请输入密码' + input_pwd: '请输入密码', + message_box: { + alert: '警告', + confirm: '确认' + } }, documentation: { documentation: '文档', diff --git a/frontend/src/utils/request.js b/frontend/src/utils/request.js index 1133e95334..01c319e3b3 100644 --- a/frontend/src/utils/request.js +++ b/frontend/src/utils/request.js @@ -57,7 +57,7 @@ const checkAuth = response => { if (response.headers['authentication-status'] === 'login_expire') { const message = i18n.t('login.expires') - store.dispatch('user/setLoginMsg', message) + // store.dispatch('user/setLoginMsg', message) $alert(message, () => { store.dispatch('user/logout').then(() => { location.reload() @@ -65,7 +65,7 @@ const checkAuth = response => { }) } - if (response.headers['authentication-status'] === 'invalid' || response.status === 401) { + if (response.headers['authentication-status'] === 'invalid') { const message = i18n.t('login.tokenError') $alert(message, () => { store.dispatch('user/logout').then(() => { @@ -85,59 +85,6 @@ const checkAuth = response => { } } -const checkPermission = response => { - // 请根据实际需求修改 - if (response.status === 404) { - location.href = '/404' - } - if (response.status === 401) { - location.href = '/401' - } -} - -// response interceptor -/** -service.interceptors.response.use( - response => { - const res = response.data - - // if the custom code is not 20000, it is judged as an error. - if (res.code !== 20000) { - Message({ - message: res.message || 'Error', - type: 'error', - duration: 5 * 1000 - }) - - // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired; - if (res.code === 50008 || res.code === 50012 || res.code === 50014) { - // to re-login - MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', { - confirmButtonText: 'Re-Login', - cancelButtonText: 'Cancel', - type: 'warning' - }).then(() => { - store.dispatch('user/resetToken').then(() => { - location.reload() - }) - }) - } - return Promise.reject(new Error(res.message || 'Error')) - } else { - return res - } - }, - error => { - console.log('err' + error) // for debug - Message({ - message: error.message, - type: 'error', - duration: 5 * 1000 - }) - return Promise.reject(error) - } -) -*/ // 请根据实际需求修改 service.interceptors.response.use(response => { response.config.loading && tryHideLoading(store.getters.currentPath) @@ -148,12 +95,12 @@ service.interceptors.response.use(response => { let msg if (error.response) { checkAuth(error.response) - checkPermission(error.response) + // checkPermission(error.response) msg = error.response.data.message || error.response.data } else { msg = error.message } - !error.config.hideMsg && $error(msg) + !error.config.hideMsg && (!error.config.headers['authentication-status']) && $error(msg) return Promise.reject(error) }) export default service