Browse Source

feat: "完善JWTTokenUtil的解析流程"

Leonezhurui 2 years ago
parent
commit
e9a0df0b93

+ 2 - 1
src/main/java/com/njuzr/eaibackend/config/JWTAuthenticationFilter.java

@@ -38,8 +38,9 @@ public class JWTAuthenticationFilter extends OncePerRequestFilter {
         String token = request.getHeader("Authorization");
         log.info("从Header中解析出Token:" + token);
 
-        if (token != null) {
+        if (token != null && jwtTokenUtil.isTokenNotExpired(token)) {
             String username = jwtTokenUtil.parseToken(token);
+            log.info("解析出username:" + username);
             UserDetails userDetails = userDetailService.loadUserByUsername(username);
             log.info("解析出UserDetails:" + userDetails);
 

+ 0 - 44
src/main/java/com/njuzr/eaibackend/config/JWTAuthenticationToken.java

@@ -1,44 +0,0 @@
-package com.njuzr.eaibackend.config;
-
-import org.springframework.security.authentication.AbstractAuthenticationToken;
-import org.springframework.security.core.userdetails.UserDetails;
-
-/**
- * @author: Leonezhurui
- * @Date: 2024/2/20 - 21:50
- * @Package: EAI-Backend
- */
-
-public class JWTAuthenticationToken extends AbstractAuthenticationToken {
-
-    private final Object principal;
-    private String jwtToken;
-
-    public JWTAuthenticationToken(String jwtToken) {
-        super(null);
-        this.principal = null;
-        this.jwtToken = jwtToken;
-        setAuthenticated(false);
-    }
-
-    public JWTAuthenticationToken(UserDetails principal, String jwtToken) {
-        super(principal.getAuthorities());
-        this.principal = principal;
-        this.jwtToken = jwtToken;
-        super.setAuthenticated(true); // must use super, as we override
-    }
-
-    @Override
-    public Object getCredentials() {
-        return null;
-    }
-
-    @Override
-    public Object getPrincipal() {
-        return this.principal;
-    }
-
-    public String getJwtToken() {
-        return jwtToken;
-    }
-}

+ 11 - 6
src/main/java/com/njuzr/eaibackend/utils/JWTTokenUtil.java

@@ -63,14 +63,19 @@ public class JWTTokenUtil {
                 .build()
                 .parseSignedClaims(token);
     }
-    public JwsHeader parseHeader(String token) {
-        return parseClaim(token).getHeader();
-    }
-    public Claims parsePayload(String token) {
-        return parseClaim(token).getPayload();
-    }
 
     public String parseToken(String token) {
         return parseClaim(token).getPayload().getSubject();
     }
+
+
+
+    /**
+     * 判断token是否未失效
+     * true表示未失效
+     */
+    public boolean isTokenNotExpired(String token) {
+        Date expiredDate = parseClaim(token).getPayload().getExpiration();
+        return expiredDate.after(new Date());
+    }
 }