Parcourir la source

feat: 修改配置

zhangying il y a 1 semaine
Parent
commit
d6bfd8f5bc

+ 18 - 0
zjrs-service-backend/pom.xml

@@ -306,6 +306,24 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-data-redis</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>io.jsonwebtoken</groupId>
+            <artifactId>jjwt-api</artifactId>
+            <version>0.12.5</version>
+        </dependency>
+        <dependency>
+            <groupId>io.jsonwebtoken</groupId>
+            <artifactId>jjwt-impl</artifactId>
+            <version>0.12.5</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>io.jsonwebtoken</groupId>
+            <artifactId>jjwt-jackson</artifactId>
+            <version>0.12.5</version>
+            <scope>runtime</scope>
+        </dependency>
     </dependencies>
 
     <build>

+ 34 - 27
zjrs-service-backend/src/main/java/com/zjrs/zwnw/auth/util/JwtUtil.java

@@ -1,77 +1,84 @@
 package com.zjrs.zwnw.auth.util;
 
 import io.jsonwebtoken.*;
+import io.jsonwebtoken.security.Keys;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
 
+import javax.crypto.SecretKey;
+import java.nio.charset.StandardCharsets;
+import java.time.Instant;
 import java.util.Date;
-import java.util.HashMap;
 import java.util.Map;
 
 /**
- * JWT 工具类(HMAC-SHA256)
- * 使用 jjwt 0.9.1 API
+ * JWT 工具类 - 适配 Spring Boot 3.5 & JJWT 0.12+
  */
 @Component
 public class JwtUtil {
 
     private static final Logger log = LoggerFactory.getLogger(JwtUtil.class);
 
-    /** Token 有效期:4小时(秒) */
+    /** Token 有效期:4小时 */
     private static final long EXPIRE_SECONDS = 4 * 60 * 60;
 
     /**
-     * HMAC 密钥(生产环境应从配置文件读取)
+     * HMAC 密钥
+     * 注意:HS256 要求密钥长度至少为 256 位(32 字节)
      */
-    private static final String SECRET = "zjrs-zwnw-service-2019-auth-key-xK9mP3qR7vZ1nL5wY8eA";
+    private static final String SECRET_STR = "zjrs-zwnw-service-2019-auth-key-xK9mP3qR7vZ1nL5wY8eA";
+
+    // 预先构建 SecretKey 对象,性能更好且符合安全规范
+    private final SecretKey key = Keys.hmacShaKeyFor(SECRET_STR.getBytes(StandardCharsets.UTF_8));
 
     /**
      * 生成 JWT Token
      */
     public String generateToken(String loginId, String userName, String operid, Long operunitid) {
-        Map<String, Object> claims = new HashMap<>();
-        claims.put("loginId", loginId);
-        claims.put("userName", userName);
-        claims.put("operid", operid);
-        claims.put("operunitid", operunitid);
-
-        Date now = new Date();
-        Date expiry = new Date(now.getTime() + EXPIRE_SECONDS * 1000L);
+        Instant now = Instant.now();
+        Instant expiry = now.plusSeconds(EXPIRE_SECONDS);
 
         return Jwts.builder()
-                .setClaims(claims)
-                .setSubject(loginId)
-                .setIssuedAt(now)
-                .setExpiration(expiry)
-                .signWith(SignatureAlgorithm.HS256, SECRET.getBytes())
+                .header().add("typ", "JWT").and() // 显式指定类型
+                .subject(loginId)
+                .claims(Map.of(
+                        "loginId", loginId,
+                        "userName", userName,
+                        "operid", operid,
+                        "operunitid", operunitid
+                ))
+                .issuedAt(Date.from(now))
+                .expiration(Date.from(expiry))
+                .signWith(key) // 0.12+ 自动识别算法
                 .compact();
     }
 
     /**
-     * 解析 Token,失败返回 null
+     * 解析 Token
      */
     public Claims parseToken(String token) {
         try {
             return Jwts.parser()
-                    .setSigningKey(SECRET.getBytes())
-                    .parseClaimsJws(token)
-                    .getBody();
+                    .verifyWith(key) // 替换 setSigningKey
+                    .build()
+                    .parseSignedClaims(token) // 替换 parseClaimsJws
+                    .getPayload(); // 替换 getBody
         } catch (ExpiredJwtException e) {
             log.warn("Token 已过期: {}", e.getMessage());
         } catch (JwtException e) {
-            log.warn("Token 解析失败: {}", e.getMessage());
+            log.error("Token 校验失败: {}", e.getMessage());
+        } catch (Exception e) {
+            log.error("Token 解析发生未知错误", e);
         }
         return null;
     }
 
-    /** 校验 Token 是否有效 */
     public boolean isValid(String token) {
         return parseToken(token) != null;
     }
 
-    /** 获取 Token 有效期(秒) */
     public long getExpireSeconds() {
         return EXPIRE_SECONDS;
     }
-}
+}

+ 9 - 0
zjrs-service-backend/src/main/java/com/zjrs/zwnw/portal/entity/SSgMenuMapper.java

@@ -0,0 +1,9 @@
+package com.zjrs.zwnw.portal.entity;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zjrs.zwnw.portal.po.SSgMenuPO;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface SSgMenuMapper extends BaseMapper<SSgMenuPO> {
+}

+ 73 - 0
zjrs-service-backend/src/main/java/com/zjrs/zwnw/portal/po/SSgMenuPO.java

@@ -0,0 +1,73 @@
+package com.zjrs.zwnw.portal.po;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+@TableName("ZJZHRS.S_SG_MENU")
+public class SSgMenuPO {
+    @TableField("ID")
+    private String id;
+
+    @TableField("PARENT_ID")
+    private String parentId;
+
+    @TableField("MENU_NAME")
+    private String menuName;
+
+    @TableField("URL")
+    private String url;
+
+    @TableField("ICON")
+    private String icon;
+
+    @TableField("ORDER_NUMBER")
+    private Integer orderNumber;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(String parentId) {
+        this.parentId = parentId;
+    }
+
+    public String getMenuName() {
+        return menuName;
+    }
+
+    public void setMenuName(String menuName) {
+        this.menuName = menuName;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getIcon() {
+        return icon;
+    }
+
+    public void setIcon(String icon) {
+        this.icon = icon;
+    }
+
+    public Integer getOrderNumber() {
+        return orderNumber;
+    }
+
+    public void setOrderNumber(Integer orderNumber) {
+        this.orderNumber = orderNumber;
+    }
+}

+ 1 - 1
zjrs-service-backend/src/main/java/com/zjrs/zwnw/sxgl/entity/FwRight2ResourceMapper.java

@@ -10,5 +10,5 @@ import java.util.List;
 
 @Mapper
 public interface FwRight2ResourceMapper extends BaseMapper<FwRight2ResourcePO> {
-    List<VRsSyYydhInfoPO> selectList(QueryWrapper<FwRight2ResourcePO> rightid);
+    List<FwRight2ResourcePO> selectList(QueryWrapper<FwRight2ResourcePO> rightid);
 }