xiaochan 1 рік тому
батько
коміт
b5a5f4a7b9

+ 1 - 1
pom.xml

@@ -10,7 +10,7 @@
     </parent>
     <groupId>thyyxxk</groupId>
     <artifactId>web-server</artifactId>
-    <version>12.1.8</version>
+    <version>12.2.3</version>
     <name>web-server</name>
     <description>server for yibao-web</description>
     <properties>

+ 1 - 14
src/main/java/thyyxxk/webserver/config/auth/AuthenticationInterceptor.java

@@ -59,8 +59,6 @@ public class AuthenticationInterceptor implements HandlerInterceptor {
                 return true;
             }
         }
-
-
         // 执行认证
         String token = request.getHeader("token");
         if (token == null) {
@@ -79,18 +77,7 @@ public class AuthenticationInterceptor implements HandlerInterceptor {
             log.info("请求参数: {}", request.getQueryString());
             throw new BizException(ExceptionEnum.TOKEN_ERROR);
         }
-        try {
-            if (!TokenUtil.getInstance().verifyToken(token)) {
-                throw new BizException(ExceptionEnum.TOKEN_EXPIRED);
-            }
-        } catch (JWTVerificationException e) {
-            if (e.getMessage().contains(EXPIRED)) {
-                throw new BizException(ExceptionEnum.TOKEN_EXPIRED);
-            } else {
-                log.error("验证令牌出错!", e);
-                throw new BizException(ExceptionEnum.TOKEN_ERROR);
-            }
-        }
+        TokenUtil.getInstance().verifyToken(token);
         return true;
     }
 }

+ 0 - 11
src/main/java/thyyxxk/webserver/utils/StringTrim.java

@@ -1,11 +0,0 @@
-package thyyxxk.webserver.utils;
-
-import java.lang.annotation.*;
-
-/**
- * @author xc
- */
-@Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.TYPE, ElementType.PARAMETER})
-@Retention(RetentionPolicy.RUNTIME)
-public @interface StringTrim {
-}

+ 0 - 58
src/main/java/thyyxxk/webserver/utils/StringTrimUtil.java

@@ -1,58 +0,0 @@
-package thyyxxk.webserver.utils;
-
-
-import lombok.extern.slf4j.Slf4j;
-import org.aspectj.lang.JoinPoint;
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.aspectj.lang.annotation.*;
-import org.springframework.stereotype.Component;
-
-
-/**
- * <p>
- * 描述:
- * </p>
- *
- * @author xc
- * @date 2022-01-07 16:07
- */
-@Slf4j
-@Component
-@Aspect
-public class StringTrimUtil {
-    //    lombok
-    @Pointcut("@annotation(thyyxxk.webserver.utils.StringTrim)")
-    public void stringTrim() {
-    }
-
-    //在事件通知类型中申明returning即可获取返回值
-    @Before("stringTrim()")
-    public void doBefore(JoinPoint joinPoint) {
-        log.info("  切面类  ---!");
-        log.info("数据:{}", joinPoint.getArgs());
-    }
-
-    @Around("stringTrim()")
-    public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
-        log.info("  切面类  --- ! around");
-        return joinPoint.proceed();
-    }
-
-    @After("stringTrim()")
-    public void checkAfter(JoinPoint joinPoint) {
-        log.info("数据:{}", joinPoint.getArgs());
-        log.info("数据:{}", joinPoint.getTarget());
-        log.info("  切面类  --- ! checkAfter");
-    }
-
-    @AfterReturning("stringTrim()")
-    public void afterReturning(JoinPoint joinPoint) {
-        log.info("切面类 --- ! afterReturning ");
-    }
-
-    @AfterThrowing("stringTrim()")
-    public void afterThrowing(JoinPoint joinPoint) {
-        log.info("切面类 --- ! 错误信息 ");
-    }
-
-}

+ 13 - 2
src/main/java/thyyxxk/webserver/utils/TokenUtil.java

@@ -1,11 +1,14 @@
 package thyyxxk.webserver.utils;
 
+import cn.hutool.core.convert.Convert;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.jwt.JWT;
 import cn.hutool.jwt.JWTUtil;
 import org.springframework.stereotype.Component;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
+import thyyxxk.webserver.config.exception.BizException;
+import thyyxxk.webserver.config.exception.ExceptionEnum;
 
 import javax.servlet.http.HttpServletRequest;
 import java.nio.charset.StandardCharsets;
@@ -45,8 +48,16 @@ public class TokenUtil {
         return JWTUtil.createToken(map, PRIVATE_KEY.getBytes(StandardCharsets.UTF_8));
     }
 
-    public boolean verifyToken(String token) {
-        return JWTUtil.verify(token, PRIVATE_KEY.getBytes(StandardCharsets.UTF_8));
+    public void verifyToken(String token) {
+        final JWT jwt = JWTUtil.parseToken(token);
+        long expire_time = Convert.toLong(jwt.getPayload("expire_time"));
+        long now = System.currentTimeMillis();
+        if (now > expire_time) {
+            throw new BizException(ExceptionEnum.TOKEN_EXPIRED, "token已过期");
+        }
+        if (!JWTUtil.verify(token, PRIVATE_KEY.getBytes(StandardCharsets.UTF_8))) {
+            throw new BizException(ExceptionEnum.TOKEN_NOT_EXIST);
+        }
     }
 
     public String getTokenUserId() {