This is an automated email from the ASF dual-hosted git repository. liubao pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-fence.git
commit 59ab1fed77aeb58baf45e49675feaf23eb463090 Author: liubao <[email protected]> AuthorDate: Wed Aug 21 15:18:43 2024 +0800 redirect login when token expired --- admin-website/src/main/web/index.html | 2 +- admin-website/src/main/web/src/api/interceptor.ts | 21 +++++++++------------ .../servicecomb/fence/token/JWTTokenStoreImpl.java | 2 +- .../fence/edge/AuthenticationEdgeFilter.java | 8 ++++---- 4 files changed, 15 insertions(+), 18 deletions(-) diff --git a/admin-website/src/main/web/index.html b/admin-website/src/main/web/index.html index 0b1d5c7..f4062b6 100644 --- a/admin-website/src/main/web/index.html +++ b/admin-website/src/main/web/index.html @@ -4,7 +4,7 @@ <meta charset="UTF-8" /> <link rel="shortcut icon" type="image/x-icon" href="/favicon.png"/> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <title>TinyPro of Vue - 开箱即用的中后台前端/设计解决方案</title> + <title>云原生应用开发套件</title> </head> <body> <div id="app"></div> diff --git a/admin-website/src/main/web/src/api/interceptor.ts b/admin-website/src/main/web/src/api/interceptor.ts index 7867e45..e0a3229 100644 --- a/admin-website/src/main/web/src/api/interceptor.ts +++ b/admin-website/src/main/web/src/api/interceptor.ts @@ -42,12 +42,11 @@ axios.interceptors.response.use( (response: AxiosResponse<HttpResponse>) => { const res = response.data; if (response.status !== 200) { - res.errMsg && - Modal.message({ - message: res.errMsg, + Modal.alert({ + message: `status code=${response.status}, trace id=${response.headers['x-b3-traceid']}`, status: 'error', }); - return Promise.reject(new Error(res.errMsg || 'Error')); + return Promise.reject(new Error('Error')); } return res; }, @@ -57,17 +56,15 @@ axios.interceptors.response.use( clearToken(); router.replace({ name: 'login' }); Modal.message({ - message: locale.t('http.error.TokenExpire'), - status: 'error', + message: `status code=${error.response.status}, trace id=${error.response.headers['x-b3-traceid']}`, + status: info, }); } else { - data.errMsg && - Modal.message({ - message: locale.t(`http.error.${data.errMsg}`), - status: 'error', - }); + Modal.alert({ + message: `status code=${error.response.status}, trace id=${error.response.headers['x-b3-traceid']}`, + status: 'error', + }); } - return Promise.reject(error); } ); diff --git a/common/common-authentication/src/main/java/org/apache/servicecomb/fence/token/JWTTokenStoreImpl.java b/common/common-authentication/src/main/java/org/apache/servicecomb/fence/token/JWTTokenStoreImpl.java index bbd6f21..8df9649 100644 --- a/common/common-authentication/src/main/java/org/apache/servicecomb/fence/token/JWTTokenStoreImpl.java +++ b/common/common-authentication/src/main/java/org/apache/servicecomb/fence/token/JWTTokenStoreImpl.java @@ -56,9 +56,9 @@ public class JWTTokenStoreImpl implements JWTTokenStore { } public JWTToken createTokenByValue(String value) { - Jwt jwt = JwtHelper.decode(value); JWTClaims claims; try { + Jwt jwt = JwtHelper.decode(value); jwt.verifySignature(signatureVerifier); claims = JsonParser.parse(jwt.getClaims(), JWTClaims.class); } catch (Exception e) { diff --git a/edge-service/src/main/java/org/apache/servicecomb/fence/edge/AuthenticationEdgeFilter.java b/edge-service/src/main/java/org/apache/servicecomb/fence/edge/AuthenticationEdgeFilter.java index b63d8a2..1268d8c 100644 --- a/edge-service/src/main/java/org/apache/servicecomb/fence/edge/AuthenticationEdgeFilter.java +++ b/edge-service/src/main/java/org/apache/servicecomb/fence/edge/AuthenticationEdgeFilter.java @@ -64,7 +64,7 @@ public class AuthenticationEdgeFilter extends AbstractFilter implements EdgeFilt String token = invocation.getContext(CommonConstants.CONTEXT_HEADER_AUTHORIZATION); String tokenType = invocation.getContext(CommonConstants.CONTEXT_HEADER_AUTHORIZATION_TYPE); if (token == null) { - return CompletableFuture.failedFuture(new InvocationException(Status.FORBIDDEN, + return CompletableFuture.failedFuture(new InvocationException(Status.UNAUTHORIZED, new CommonExceptionData("not authenticated"))); } @@ -73,7 +73,7 @@ public class AuthenticationEdgeFilter extends AbstractFilter implements EdgeFilt if (CommonConstants.AUTHORIZATION_TYPE_ID_TOKEN.equals(tokenType)) { JWTToken jwtToken = openIDTokenStore.createIDTokenByValue(token); if (jwtToken == null || jwtToken.isExpired()) { - return CompletableFuture.failedFuture(new InvocationException(Status.FORBIDDEN, + return CompletableFuture.failedFuture(new InvocationException(Status.UNAUTHORIZED, new CommonExceptionData("token expired or not valid"))); } @@ -85,7 +85,7 @@ public class AuthenticationEdgeFilter extends AbstractFilter implements EdgeFilt CompletableFuture<Void> result = new CompletableFuture<>(); openIDTokenFuture.whenComplete((res, ex) -> { if (openIDTokenFuture.isCompletedExceptionally() || res == null || res.isExpired()) { - result.completeExceptionally(new InvocationException(Status.FORBIDDEN, + result.completeExceptionally(new InvocationException(Status.UNAUTHORIZED, new CommonExceptionData("not authenticated"))); return; } @@ -96,7 +96,7 @@ public class AuthenticationEdgeFilter extends AbstractFilter implements EdgeFilt }); return result.thenCompose((v) -> nextNode.onFilter(invocation)); } else { - return CompletableFuture.failedFuture(new InvocationException(Status.FORBIDDEN, + return CompletableFuture.failedFuture(new InvocationException(Status.UNAUTHORIZED, new CommonExceptionData("not authenticated"))); } }
