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")));
     }
   }

Reply via email to